2010-07-15 4 views
6

이것은 PHP에 대한 간단한 질문 일뿐입니다.하지만 Google에서 답변을 찾을 수없는 것 같습니다! 그것은 I 설정할 수 통상 배열이라면PHP에서 배열 키를 숫자로 변경

..

제가 첫번째 명명 된 키의 세트 다차원 배열을 갖고 I는 0, 1, 2와 같은 수치로 변경하고자 $ newArray = array_values ​​($ multiArr); 그리고 키를 제거하고 숫자로 만들 것입니다! 그러나 그것의 다차원은 이것의 밑에 열쇠/가치의 또 다른 세트를 theres.

어떻게 든 루프를 사용하여 반복하고 각 루프를 정의 할 수 있습니까? 그런데 어떻게 현재의 키를 지정하겠습니까?

감사의 말을 전하면됩니다.

이 모든 데이터가 JSON이 장치로부터 수신 오는에 도움이된다면 데이터는 다음과 같습니다 있도록 인코딩에 문제가있다 :

 
`Array 
(
    [�w� ��߯19�] => Array 
     (
      [down] => 1279146141431 
      [up] => 1279146351453 
     ) 
`

그래서 내가 어떻게 든에 접근 할 필요가 미친 열쇠 밑에있는 데이터.

답변

23

이 코드 :

$arr = array(
    'a' => array('a' => '1', 'b' => '2', 'c' => '3'), 
    'b' => array('d' => '4', 'e' => '5', 'f' => '6'), 
    'c' => array('g' => '7', 'h' => '8', 'i' => '9'), 
); 
$arr2 = array_values($arr); 

이 양식에 $ arr2를 산출 :

[0] => Array 
    (
     [a] => 1 
     [b] => 2 
     [c] => 3 
    ) 

[1] => Array 
    (
     [d] => 4 
     [e] => 5 
     [f] => 6 
    ) 

[2] => Array 
    (
     [g] => 7 
     [h] => 8 
     [i] => 9 
    ) 

그건 당신이 얻을 위해 노력하고 아닌 것은?

+0

을한다! –

+0

예 : array_values ​​()는 배열의 하위 레벨을 화나게하지 않습니다. – JavadocMD

+0

테스트 데이터는 ** 다차원 * 키 배열 *이 아닙니다. 2 차 깊이 배열은 이미 0부터 인덱싱됩니다. –

0

배열의 구조를 완전히 이해하지 못했지만 여러 가지 방법으로 다차원 연관 배열을 반복 할 수 있습니다. 여기에 숫자 인덱스 배열을 구축 하나는 다음과 같습니다

$multiArray = Array(/* stuff */); 
$numericArray = Array(); 
foreach ($multiArray as $key => $val) { 
    foreach ($val as $childKey => $childVal) { 
     // do something else? 
    } 
    $numericArray []= $val; 
} 
1

약간의 재귀 트릭이 내가이이처럼 사용할 수 있습니다 실현 감사합니다하지 않았다 작동

$data = array(
    'foo' => 'bar' 
    , 'bar' => 'baz' 
    , 'baz' => array(
     'foo' => 'bar' 
     , 'bar' => 'baz' 
     , 'baz' => array(
      'foo' => 'bar' 
      , 'bar' => 'baz' 
      , 'baz' => 'foo' 
     ) 
    ) 
    , 'foo2' => 'bar' 
    , 'bar2' => 'baz' 
    , 'baz2' => array(
     'foo' => 'bar' 
     , 'bar' => 'baz' 
     , 'baz' => 'foo' 
    ) 
); 

print_r($data); 

$data = removeKeys($data); 

print_r($data); 

function removeKeys(array $array) 
{ 
    $array = array_values($array); 
    foreach ($array as &$value) 
    { 
    if (is_array($value)) 
    { 
     $value = removeKeys($value); 
    } 
    } 
    return $array; 
} 
+0

"키의 첫 번째 세트를 명명하고 0, 1, 2와 같은 숫자로 변경하려고하는 다차원 배열이 있습니다."이것은 원래의 포스터가 첫 번째 인덱스 만 다시 색인하려고한다는 것을 나타냅니다 수평. – JavadocMD

+0

이것은 정확히 내가 찾고 있었던 것이었다! 감사! –