2014-11-29 2 views
1

foreach 루프를 통해 2D 배열에서 값을 푸시하려고하는데 그렇게하는 동안 이상한 결과가 나타납니다. 코드를 살펴 보시기 바랍니다 :PHP에서 루프를 통해 배열의 값 밀어 내기

Array ([0] => Array ([name] => Category 2) [1] => Array ([slug] => category-2) [2] => Array ([name] => Category 3) [3] => Array ([slug] => category-3) [4] => Array ([name] => Category 4) [5] => Array ([slug] => category-4) [6] => Array ([name] => Category 2) [7] => Array ([slug] => category-2) [8] => Array ([name] => Category 1) [9] => Array ([slug] => category-1)) 

은 내가 대신 원하는입니다 :

Array ([0] => Array ([name] => Category 2) [0] => Array ([slug] => category-2) [1] => Array ([name] => Category 3) [1] => Array ([slug] => category-3) [2] => Array ([name] => Category 4) [2] => Array ([slug] => category-4) [3] => Array ([name] => Category 2) [3] => Array ([slug] => category-2) [4] => Array ([name] => Category 1) [4] => Array ([slug] => category-1)) 

답변

2

왜 아무도 작동하지 않는 이유를 설명하지 못했습니다.

[]의 사용법이 잘못되었습니다. 다른 색인을 생성하게됩니다. 내가 사용하는 것입니다 있지만 바스의 답변을 참조하십시오 : 그들은 배열에 그들이 지표의 지속적인 진보 매핑이되지 않습니다하지 않으면

$term_list[] = array('name' => $parent_term->name, 'slug' => $parent_term->slug); 

:

+0

아한 !!! 당신 말이 맞아요, 처음에 Barth의 코드를 시도했는데, 결과가'[name] => [slug] => value'라는 결과를주었습니다. 그래서이 모든 것들을'array();에 넣었습니다. . 귀하의 지원과 노력에 감사드립니다! –

+0

도움이 된 것을 기쁘게 생각합니다. – zanderwar

+1

확실히 작동합니다! 다른 사람들이 이것을 보게되면, 원래 질문의'(! in_array ...) 부분은 다차원 배열이므로 작동하지 않을 것입니다. 그것은 정말로 중요한 질문의 일부는 아니지만, 처음에는 나를 트립하여 다른 사람들을위한 추가 세부 사항을 추가했습니다. – Trevor

1
$term_list[] = ['name' => $parent_term->Name, 'slug' => $parent_term->slug]; 

print_r 테스트를 통해

foreach($terms as $term) { 
       if(is_parent_tax($term)==TRUE){ 
       $parent_term = get_term($term->term_id, $taxonomy_name); 
        if(!in_array($parent_term->name,$term_list)){ 
        $term_list[]['name'] = $parent_term->name ; 
        $term_list[]['slug'] = $parent_term->slug; 
        } 
       } 
       } 

을, 나는 다음과 같은 결과를 얻을 수 가야 할 올바른 길입니다.

2

은 그냥 foreach 문에 작은 변화가

foreach($terms as $key => $term) { 
    if(is_parent_tax($term)==TRUE){ 
    $parent_term = get_term($term->term_id, $taxonomy_name); 
     if(!in_array($parent_term->name,$term_list)){ 
      $term_list[$key]['name'] = $parent_term->name ; 
      $term_list[$key]['slug'] = $parent_term->slug; 
     } 
    } 
} 

당신의

Array ([0] => Array ([name] => Category 2) [0] => Array ([slug] => category-2) [1] => Array ([name] => Category 3) [1] => Array ([slug] => category-3) [2] => Array ([name] => Category 4) [2] => Array ([slug] => category-4) [3] => Array ([name] => Category 2) [3] => Array ([slug] => category-2) [4] => Array ([name] => Category 1) [4] => Array ([slug] => category-1)) 

가 더 나은 방법이다 다른

에 의해 기록됩니다 이상 중복 키 구성 트릭을 할 수 있습니다 그것을

Array 
(
    [0] => Array 
     (
      [name] => Category 2 
      [slug] => category-2 
     ) 

    [1] => Array 
     (
      [name] => Category 3 
      [slug] => category-3 
     ) 
) 
+1

문제입니다. 하지만 그렇지 않으면 좋은 대답 +1 – cjds

+0

해당되는 경우 "속기"PHP를 홍보하는 것이 좋습니다. 통합, 조직 및 효율성이 업계에서 멀리가는 것이 우선적입니다. – zanderwar