0

多次元配列とプッシュ方法に関して、PHP のコーディングを理解するのに苦労しています。アイデアは、「属性」と「属性値」をプッシュすることです

私は以下の式を試しました

   $i = 0;
   $array = array();
    foreach($node as $a)
    {
        $strAtt = $node->PROP[$i]->attributes();
        $strVal = $node->PROP[$i]->PVAL;

        $output = $output.$strAtt." : ".$strVal."<BR>";
        $array[] = ($strAtt => $strVal);

$array[] = ( $strAtt => $strVal); 私に多くの成功を与えません。私はarray_push($array, $strAtt => $strVal) を試しました - 運が悪い..

追加の質問として、配列をループして多次元値を出力するにはどうすればよいですか?

新しいコード

while ($z->name === 'RECORD')
{

$node = new SimpleXMLElement($z->readOuterXML());

$Print = FALSE;
$output = "";
$i = 0;
foreach($node as $a)
{
    $strAtt = $node->PROP[$i]->attributes();
    $strVal = $node->PROP[$i]->PVAL;

    $output = $output.$strAtt." : ".$strVal."<BR>";
    $array[$strAtt] = $strVal;

    if(($i == 6) && ($node->PROP[$i]->PVAL == $ProductLookup))
    {
        $Print = TRUE;
        $Product = $node->PROP[$i]->PVAL;
    }       

    $i++;
}
if($Print == TRUE) {
    echo $output;
    echo "Product : ".$Product."<br>";
    var_dump($array);
    }

    //print_r($array);
    $print = FALSE;

// go to next <product />
$z->next('RECORD');
}

新しいコードが追加されました。なんらかの理由で、$Output がテキストでいっぱいなのに、$array をダンプすると完全に空になりますか?

4

2 に答える 2

2

必ずしも多次元配列ではなく、「連想」配列が必要なようです。連想配列の場合、array_push は使用しません。これを行うだけです:

$array[$strAtt] = $strVal;

次に、配列をループするには、次のようにします。

foreach ($array as $key => $value) {
    echo "$key = $value\n";
}
于 2012-10-06T10:52:16.760 に答える
0

phpで配列を確認すると、phpで配列がどのように機能するかがわかります。さらに、多次元配列に要素を追加する場合は、次のように実行できます。

$node = array ("key1"=> array (a,b) , "key2"=> array (c,d));
$array = array();
foreach ($node as $key=>$value) {
    $array [$key] = $value;
}

これは$array、ループの後に結果になります:

array (
"key1"=> array (
a,b
) , 
"key2"=> 
array (c,d)
)

それがお役に立てば幸いです、幸せなコーディング:)

于 2012-10-06T11:06:48.253 に答える