19

これが発生する理由がわからない: 基本的に、次の配列を含む配列があります。次を参照してくださいvar_dump

array(2) { 
  [0]=> array(1) { 
    [0]=> string(3) "ivr" 
  } 
  [1]=> array(1) { 
    [0]=> string(9) "ivr_dests" 
  } 
}

明らかに、このデータは一種の冗長ですが、xpath で値を取得しているときに返されたものです。そのため、最初の配列foreachをループして、最初array()の配列にネストされた配列値を割り当てます。

基本的に、これを返す必要があります:

array(2) {
  [0]=> string(3) "ivr"
  [1]=> string(9) "ivr_dests"
}

だからここに私がセットアップしたものがあります:

foreach($arr as $key => $arr2){
    $arr2[$key] = $arr2[$key][0];
    unset($arr2[$key][0]); //This returns Fatal error: Cannot unset string offsets
//if I comment out the unset(), $arr[$key] returns the same value as it did (multidim array)
};

        //I tried this too:
$i=0;
foreach($arr as $arr2){
  $arr2[$i] = $arr2[$i][0];
  $i++;
}

私が間違っていることはありますか?私はこれについて別の方法で行くべきですか?

ありがとう、

4

6 に答える 6

11

設定を解除する必要はありません。配列全体ではなく、内側の配列の値で外側のパラメーターをオーバーライドしています。

$a1 = array("ivr");
$a2 = array("ivr2");

$a3 = array($a1, $a2);

foreach($a3 as $key => $value){
    $a3[$key] = $a3[$key][0];
    //unset($arr2[$key][0]);
};

var_dump($a3);

foreach の仕組みについて混乱していると思います。

foreach($array as $key => $value)
{
  echo $key;
  echo $value;
}

配列内の各キー/値ペアのキーと値を表示します。

于 2012-09-05T21:13:58.757 に答える
9

このエラーは、少し異なる状況で発生したため、役立つ可能性があります。

unset($search['param']['complete'])

$search['param'] がまだ配列ではなく文字列である場合、これは同じエラーをスローしました。

于 2014-05-22T17:22:45.270 に答える
2

私はあなたがforeach間違った構文を持っていると信じています...それは$key => $valueあなたが持っている場所でなければなりません$key => $arr2。したがって、ネストされた配列内の$arr2[$key]要素を探している場合。は、文字列 (連想配列の場合) または整数 (非連想配列の場合) のいずれかで参照されます。で参照することもできます。$key$arr2$arr2$key$arr2$arr[$key]

http://php.net/manual/en/control-structures.foreach.php

于 2012-09-05T21:06:34.507 に答える