2013-07-13 4 views
-1

안녕하세요, 나는 배열 예제와 함께 코드 조각을 가지고 문제는 내가 배열의 키를 잃어 버리고 있다는 것입니다. 배열은 다차원 하나이며 나는이 두 배열에 (그것을 게시하는 데 시간이 너무 오래) 거기에 키배열에서 키를 잃어버린 배열

$columns = array(
    "1" => array(
    "foo" => "bar", 
    "bar" => "foo", 
    "foo" => "bar", 
    "bar" => "foo", 
    "foo" => "bar", 
    "bar" => "foo", 
    "foo" => "bar", 
    "bar" => "foo", 
    "foo" => "bar", 
    "bar" => "foo", 
); 
$array = array(
    "1" => array(
    "foo" => "bar", 
    "bar" => "foo", 
    "foo" => "bar", 
    "bar" => "foo", 
    "foo" => "bar", 
    "bar" => "foo", 
    "foo" => "bar", 
    "bar" => "foo", 
    "foo" => "bar", 
    "bar" => "foo", 
), 
    "2" => array(
    "1" => "bar", 
    "2" => "foo", 
    "3" => "bar", 
    "4" => "foo", 
    "5" => "bar", 
    "6" => "foo", 
    "7" => "bar", 
    "8" => "foo", 
    "9" => "bar", 
    "10" => "foo", 
) 
); 

확인을 많이 가지고 있기 때문에 나는 고정 된 수의 또는 키를 가지고 여기에 샘플 버전을 게시 내가 뭘 원하는 첫 번째 배열에서 값을 받고 내 두 번째 배열에서 키로 사용하십시오. 지금까지는 그렇게 좋았지 만 두 번째 foreach를 사용하여 값을 먼저 얻었고 두 번째 foreach를 키 배열로 사용하여 $ array (내 생각에 다시 작성한 것)에서 내 키를 잃어 버렸습니다. 이 코드를 수정하는 방법이 없기 때문에이 코드로 나를 도와 줄 수 있습니까?

foreach($array as $key => $val) 
{ 
    array_splice($val, 66); 
    foreach($val as $k => $row) 
    { 
     if (isset($columns[$k])) 
     { 
      $info[$columns[$k]] = $row; 
     } 
    } 
    return $info; 
} 

업데이트 : 내가 여기 달성하고 싶었다 무엇

는 키 배열과 가치에 대한 또 다른 하나를 사용하여 배열을 생성했다. 나중에 나는 array_combine으로 그것을 할 수 있다는 것을 발견했다. 내 문제를 해결했습니다

+0

[최소 예] (http://sscce.org/)를 작성하면 누군가가 도움을 줄 가능성이 큽니다. 심지어 당신이 직접 오류를 이해할 수 있습니다 – RiaD

답변

1

PHP는 배열 키로 1과 "1"을 구별하지 않습니다.

그래서 다음과 같다 :

그들은 모두 $array에서 2 요소에 할당
$array["1"] = $something; 
$array[1] = $something; 

(아마도 데이터를 종료 덮어 쓰기).

+0

네 대신 내가 두 번째 배열에있는 두 번째 배열에 두 번째 배열을 덮어 씁니다 및 두 번째 배열에서 첫 번째 배열을 잃어버린 해요 (다차원 한) – Bogdan

1

더 쉬운 방법이 있습니다. array_flip 기능을 사용하십시오.

+0

그것은 일을 할 것이지만 나는 키와 함께 값을 뒤집고 싶지 않습니다. 첫 번째 배열의 값을 두 번째 배열의 키로 사용하고 싶습니다 : D – Bogdan

+0

그래서'array_values'? 당신의 질문은 당신이하려는 것을 잘 설명하지 못합니다; 당신은 더 좋은 예가 필요하다. – duskwuff