2011-09-28 6 views
-1

감사합니다. 내 방식이 잘못되었습니다. 더 이상 게시하지 마십시오.인덱스없이 배열에 필드 추가 - PHP

내 배열에 문제가있었습니다.

I이 방법 내 배열 생성 :

private function _getMenuBar(){ 
    $data = array(); 
    $query = $this->db->query("SELECT * FROM df_menubar_table WHERE visible = 1 AND parent = -1 ORDER BY priority"); 
    foreach($query->result_array() as $row){ 
     $data[count($data)] = array(
     "menu" => array(
      "title" => $row['title'], 
      "url" => $row['url'], 
      "name" => $row['name'], 
      "selected" => 0 
     ) 
    ); 
    } 
    return $data; 
    } 

평소 배열

어레이 [0] = 메뉴 => 어레이 (제목, URL 이름 선택) 같은 공급한다;

그러나 색인으로 $data[**count($data)**]을 정의하고 '메뉴'를 색인으로 정의하고 싶습니다. CodeIgniter는보기로 전달할 때 이와 같은 것을 지원하지 않습니다. 따라서 메뉴을 입력해야합니다.

이 의미

어레이 [0] = 메뉴 => 어레이 (제목, URL은, 이름이 선택됨);

행 :

배열 [ '메뉴'] = 배열 ​​(제목, URL은, 이름이 선택됨);

현재, + = 시도했지만 마지막 행이 저장되었습니다.

감사합니다.

편집 :

내가 그것을 시도 :

는 나는이로 전환 방법을 시도했다. 그러나 다음과 같이 바뀌 었습니다 :

array(1) { 
    ["menu"]=> 
    array(5) { 
    [0]=> 
    array(1) { 
     ["menu"]=> 
     array(4) { 
     ["title"]=> 
     string(8) "اصلی" 
     ["url"]=> 
     string(30) "http://localhost/dreamfactory/" 
     ["name"]=> 
     NULL 
     ["selected"]=> 
     int(0) 
     } 
    } 
+0

무슨 나쁜 마지막 배열 예에? 그것은 단지 하나의 항목을 가지고 있지만 당신은 모든 항목을 원합니까? – hakre

+0

그것은 하나의 단일 필드에서 전체 배열을 돌리고 있습니다 :). 그들은 분리되어있다. – MahanGM

+0

"단일 필드"는 실제로 5 개 항목의 배열입니다. 나는 그 하나라고 부르지 않을 것이다. 템플릿의'$ menu'에 배열로 사용할 수 있습니다. 템플릿에서 어떻게 필요합니까? 배열은 문제가되지 않습니다. – hakre

답변

0

고유 한 식별자가 필요합니다. 고유 식별자가없는 배열 [ 'menu']에 여러 항목을 추가하면 마지막/가장 최근 항목이 이전 항목을 덮어 씁니다. 아래처럼 배열을 설정할 수 있습니다.

Array 1: 
Array (
    [menu] => Array (
    [0] => Array (
     [title] => Title 
     [url] => URL 
     [name] => Name 
     [selected] => Selected 
    ) 
    ) 
) 

Array 2: 
Array (
    [0] => Array (
     [title] => Title 
     [url] => URL 
     [name] => Name 
     [selected] => Selected 
    ) 
) 

마지막 하나는 메뉴 항목을 포함하거나 포함하지 않을 수 있습니다.

코드는 다음과 같이 표시됩니다 (간체)

private function _getMenuBar(){ 
    $data = array(); 
    $query = $this->db->query("SELECT * FROM df_menubar_table WHERE visible = 1 AND parent = -1 ORDER BY priority"); 
    $countRows = 0; 
    foreach($query->result_array() as $row){ 
    $data[$countRows] = array(
     "title" => $row['title'], 
     "url" => $row['url'], 
     "name" => $row['name'], 
     "selected" => 0 
    ); 
    $countRows++; 
    } 
    return $data; 
} 
+0

이 작업을 수행하고 싶지만 CodeIgniter는 배열을 뷰에 전달할 때 뷰에서'$ menu'와 같이 변수로 필드 이름을 사용해야합니다. 하지만 숫자 식별자를 어떻게 사용해야하는지 모르겠습니다. – MahanGM

+0

변수 추가 $ countRows = 0; foreach 전에 foreach의 끝에서 $ countRows ++를 넣는다; $ countRows는 고유 식별자 –

+0

이 될 것입니다. 이제 확인해 보겠습니다. BTW! 만약 내가한다면, 그것은 $ data [count ($ data)]와 같다. 응? 내 모든 문제는 CodeIgniter가 배열 자체를 뷰에 전달합니다. 그런식이 아니었다면'$ data [$ i] [ "menu"] [...]'를 사용할 수 있습니다. – MahanGM

0

$ 데이터에 array_shift()하십시오. 그렇게하면 array[0] 래퍼가 제거됩니다. 이게 당신이 의미 한거야? 그렇지 않으면 pleace가 더 명확하게 표현됩니다.

+0

좋아, 해보겠습니다. – MahanGM