これが発生している理由がわかりません。基本的に、次の配列を含む配列があります。_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++;
}
_
私が間違っていることはありますか?私はこれを別の方法で進めるべきですか?
おかげで、
設定を解除する必要はありません。配列全体ではなく、内側の配列の値で外側のパラメーターを上書きしています。
$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;
}
配列内の各キー/値ペアのキーと値を表示します。
このエラーはわずかに異なる状況で発生しましたが、役立つ可能性があります。
unset($search['param']['complete'])
$ search ['param']がarrayではなくstringである場合、これは同じエラーをスローしました。
foreach
の構文が間違っていると思います... $key => $value
がある場所は$key => $arr2
である必要があります。したがって、$arr2[$key]
がある場合、ネストされた配列$key
で要素$arr2
を探しています。 $arr2
は、$key
によって参照されます。これは、文字列(連想配列の場合)または整数(非連想配列の場合)です。 $arr2
は、$arr[$key]
からも参照できます。
エラーはコードにあります。
割り当てた後
$arr2[$key] = $arr2[$key][0];
$arr2[$key]
は文字列"ivr"
になり、$arr2[$key][0]
は文字列の最初の文字であり、設定解除できません
これは、文字列値を設定解除しようとしたときに発生します-以下の場合、文字列である配列の最初の要素にアクセスし、設定を解除しようとすると、このエラーが発生します。
$a=array("hello", "there");
unset($a[0][0]);
これは〜をひき起こす:
Fatal error: Cannot unset string offsets in ... on line ...