2016-05-20 9 views
1

特定のインデックス値から始まる配列要素の値の最後のオカレンスを見つけることは可能ですか?私はこの記事で部分的な解決策を見つけました[How can I find the key of the last occurrence of an item in a multidimensional array?しかし、特定のインデックスで開始することはできません。私は 'id'番号に一致する配列をループしています。 'id'の数字が現在の配列インデックスに存在しない場合は、そのポイントからその値が最後に出現するまで検索したいと思います。PHPは指定されたインデックスから多次元配列から最後のオカレンスを見つける

$last = ""; 
    foreach($arr as $key => $array) { 
    if ($array['id'] === $id) { 
    $last = $key; 
    } 
    } 
    echo $last."\n\n"; 
+0

ため、通常での$ ARRは、数値インデックスを持っていることを行うことができますか? – splash58

答えて

1

配列は数値インデックスを持っている場合は、ループ

$last = false; 
for($i = $start; $i >= 0; $i--) { // $start - index to start look up 
    if ($arr[$i]['id'] === $id) { 
    $last = $i; 
    break;      // if key is found, stop loop 
    } 
} 

if($last !== false) 
    echo $last."\n\n"; 
else 
    echo "Not found" . "\n"; 
+0

1つの問題でうまくいきます。見つかった最後のインデックスが1になる理由がありますか?実行され、$ lastの配列の値を調べると、それらは1になっているか、次の配列の値を示しています。 $ last-1を使用すると、目的の配列をスキップしてその前の値を取得します。 – snowman

+0

@snowman私はphoeによって書いていて、多くの間違いを犯しました。今すぐテストしてください – splash58

+0

あなたはそれを殺していますhttp://stackoverflow.com/tags/php/topusers – AbraCadaver

0
<?php 

$myArray = [ 
    "bus" => "blue", 
    "car" => "red", 
    "shuttle" => "blue", 
    "bike" => "green"; 
]; 

$findValue = "blue"; 

$startIndex = "bus"; 
$continue = false; 
$lastIndex = null; 

foreach ($myArray as $key => $value) 
{ 
    if(!$continue && $key === $startIndex) 
    { 
    $continue = true; 
    } else if($continue) { 
    if($key === $findValue) { 
     $lastIndex = $key; 
    } 
    } 
} 

基本的に私は唯一のあなたが見つけるためにしようとしている最初のインデックスに対してインデックスをチェックして、ここでやっている、そのインデックス、それは試してみて、現在のキーの値を比較するために行くだろうことを発見した場合あなたが指定しようとしているものに移動します。

関連する問題