$arr
次のような配列があります。
array(3) {
[0]=>
array(2) {
["food"]=>
string(5) "Toast"
["age"]=>
string(2) "28"
}
[1]=>
array(2) {
["food"]=>
string(5) "Pizza"
["age"]=>
string(2) "45"
}
[2]=>
array(2) {
["food"]=>
string(5) "Steak"
["age"]=>
string(2) "33"
}
}
変数もあります$curr_age = 45;
。
$arr[$i]["age"] = $curr_age
今、見つけて停止するまで配列を検索する方法を探しています。
また、次と前の配列 (この例ではトーストとステーキ) から食べ物を取得するにはどうすればよいですか?
配列を検索するために、次のコードがあります。
$i = 0;
foreach( $arr as $array ){
if( $curr_age == $arr[$i]["age"] ) {
$next = $arr[$i++]["food"];
$prev = $arr[$i--]["food"];
}
$i++;
}
ご想像のとおり、これは期待どおりに機能しておらず、その理由はわかりません。ただし、foreach
ループは実際にはインクリメントにのみ使用され、使用される$i
こと$array
はありませんが、これを修正する方法や上記のタスクを一般的に実行する方法がわかりません。
PHPにはこれを行うための「組み込み」の方法がないことをすでに知っていると思います。追加の関数が必要ですが、繰り返しになりますが、その関数が何をする必要があるのか わかりません。この声明が真実であるかどうかさえ確信が持てません。
私はすでに試しarray_search
てから、キーを1ずつ増減させましたが、2つの理由でうまくいきませんでした。まず、array_search
そのタイプの配列を処理できないようです。次に、キーが連続していない可能性があるため、実行する$x++
か、$x--
正しくないようです。