2011-07-19 77 views
0

我要動態地創建數組的數組,我不知道如何初始化數組我數組的數組...初始化爲PHP

下面是代碼:

$resT= array(); 
$resR= array(); 
foreach ($cursor as $obj) { 
    if ($obj == NULL) continue; 
    $c="XX"; 
    if (test1)   $c=$obj['GC']; 
    array_push($resT[$c],$obj['AT']); 
    array_push($resR[$c],$obj['AR']); 
} 

我得到這個:array_push()預計參數1是陣列

謝謝,

阿米爾。

+1

速記符號,您應該使用其他變量名:'$ resT','$ resR','$ obj'等等都不是很有益的名字。一個變量名應該總是爲自己說話。 – KingCrunch

+0

你究竟想用這段代碼來完成什麼? – varchar255

回答

2
$resT= array(); 
$resR= array(); 
foreach ($cursor as $obj) { 
    if ($obj == NULL) continue; 
    $c="XX"; 
    if (test1)   $c=$obj['GC']; 
    if(!isset($resT[$c])) 
     $resT[$c] = array(); 
    if(!isset($resR[$c])) 
     $resR[$c] = array(); 
    array_push($resT[$c],$obj['AT']); 
    array_push($resR[$c],$obj['AR']); 
} 
+0

謝謝,它的工作......我是新手...我不知道isset()函數。 – Amir

0

我不知道你要完成什麼,但至少應該解決您的PHP的通知:

$resT= array(); 
$resR= array(); 
foreach ($cursor as $obj) { 
    if ($obj == NULL) continue; 
    $c="XX"; 
    if (test1)   $c=$obj['GC']; 

    if(!is_array($resT[$c])){ 
     $resT[$c] = array(); 
    } 

    if(!is_array($resR[$c])){ 
     $resR[$c] = array(); 
    } 

    array_push($resT[$c],$obj['AT']); 
    array_push($resR[$c],$obj['AR']); 
} 
1

你甚至都不需要使用array_push。

您可以使用

$resT= array(); 
$resR= array(); 
foreach ($cursor as $obj) { 
    if ($obj == NULL) continue; 
    $c="XX"; 
    if (test1)   $c=$obj['GC']; 
    $resT[$c] = array(); 
    $resT[$c][] = $obj['AT']; 
    $resR[$c] = array(); 
    $resR[$c][] = $obj['AR']; 
} 
+0

您在每次迭代中重新創建'$ resT [$ c]'('$ resR [$ c]')。這意味着每個'$ resT [$ c]'只包含'$ c'每個值的最後一個元素。 – KingCrunch

+0

沒有工作..它只包含$ c的最後一個值不是全部...... – Amir

0
$resT= array(); 
foreach ($cursor as $obj) { 
    if (!is_null($obj)) { 
    $c = $test1 ? $obj['GC'] : "XX"; 
    if (!array_key_exists($c, $resT)) $resT[$c] = array(); 
    $resT[$c][] = $obj['AT']; 
    } 
} 
$resR = $resT;