2011-07-19 59 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;