多次元配列では、必ずしも構造を知っているわけではありません。名前でキーを検索して内容を変更したり追加したりする方法は?キーの値は文字列でも配列でも、どちらの方法でもエフェクトを適用する必要があります。array_walk_recursiveを見ていましたが、別の配列を含むものは無視されます...PHPで配列キーを見つけ、その値や内容を変更しますか?
1
A
答えて
2
これは機能しますか?
function arrayWalkFullRecursive(&$array, $callback, $userdata = NULL) {
call_user_func($callback, $value, $key, $userdata);
if(!is_array($array)) {
return false;
}
foreach($array as $key => &$value) {
arrayWalkFullRecursive($value);
}
return true;
}
arrayWalkFullRecursive($array,
create_function( // wtb PHP 5.3
'&$value, $key, $data',
'if($key == $data['key']) {
$value = $data['value'];
}'
),
array('key' => 'foo', 'value' => 'bar')
);
1
PHPの配列キーはintですと文字列。配列の配列キーを持つことはできません。そう、ええ、array_walk_recursive()
あなたが欲しいものです。
+0
これは、キーに対応する値を意味します。値が配列の別のレベルであれば、配列をスキップし、配列以外の値を持つものが見つかるまで内部的に再帰します。 –
0
かなりうまくいっていませんでしたが、正しい軌道に乗ってくれました。配列項目を削除するためのremove_recursive()という関数をまとめました。add_recursive()とchange_recursive()を作成する必要があります。 :) –
@Belanger、私の問題は何ですか?何がうまくいかなかったのですか? – strager
ああ、待って、私は知っていると思う。私は私の答えを編集します。 – strager