2011-09-29 15 views
0
$array = array(
    'the-1'=> array('name'=>'lorem','pos'=>array('top'=>'90','left'=>'80'),'zindex'=>2), 
    'the-2'=> array('name'=>'ipsum','pos'=>array('top'=>'190','left'=>'180'),'zindex'=>1), 
    'the-3'=> array('name'=>'lorem ipsum','pos'=>array('top'=>'20','left'=>'30'),'zindex'=>3) 
); 

上記のphp配列にzindexキーが存在するかどうかを確認してください。php多次元連想配列のキー検索

+0

「どうのZIndexキーをチェックするために上記のPHPの配列に存在する」 - どこでも/少なくとも一度か、$配列の各要素は、a)の配列とb)は、インデックス/キーを持っているかどうかを確認したいです'zindex'? – VolkerK

答えて

1

これにはarray_key_existsというメソッドがあります。もちろん、値の配列の深さがわからない場合は、(再帰的に)ループを繰り返す必要があります。

0

たぶん、あなたはarray_key_existを追加する(これはphp.netから取られただけで印刷例ですが、簡単にあなたのニーズに合わせてそれを適応させることができ、このように

<?php 
$sweet = array('a' => 'apple', 'b' => 'banana'); 
$fruits = array('sweet' => $sweet, 'sour' => 'lemon'); 

function test_print($item, $key) 
{ 
    echo "$key holds $item\n"; 
} 

array_walk_recursive($fruits, 'test_print'); 
?> 

array_walk_recursive機能を使用しての事がすべきコールバック関数など)

0

ここで何をしたいのかは完全には分からないので、ここではzindexで実行できるさまざまなテストを示します。これらはすべてforeachループとarray_key_existsを使用します。

あなたはそれがのZIndexを持っているかどうかを確認するために外側の配列内の各項目をチェックしたい場合:

は、これは、各要素をループし、単に要素はある種ののZIndexキーを持っているかどうかを確認し。

foreach($array as $key => $element) { 
    if(array_key_exists('zindex',$element)) { 
     echo "Key '$key' has a zindex of ".$element['zindex']."\n<br>\n"; 
    } else { 
     echo "Fail!! Key '$key' has no zindex!\n<br>\n"; 
    } 
} 

あなただけのまったくのZIndexのキーがあるように探している場合:

それはのZIndexを持つ要素を見つけるまでこれがループします。 zindexが見つかった場合はtrueを返し、そうでない場合はfalseを返します。

function find_zindex($array) { 
    foreach($array as $key => $element) { 
     if(array_key_exists('zindex',$element)) { 
      echo "Key '$key' has a zindex of ".$element['zindex']."\n<br>\n"; 
      return true; 
     } 
    } 
    return false; 
} 

if(find_zindex($array)) { 
    echo "A zindex was found\n<br>\n"; 
} else { 
    echo "Fail: no zindex was found\n<br>\n"; 
} 

あなたは、アレイ内の特定のZIndex値を探しているなら:

これは、特定の値を持つ特定のZIndexを探して、ループします。見つかった場合は、外部配列のキーが返されます。それ以外の場合はnullが返されます。

function find_zindex($array, $search_key) { 
    foreach($array as $key => $element) { 
     if(array_key_exists('zindex',$element) && $element['zindex']==$search_key) { 
      echo "Key '$key' has a zindex of ".$element['zindex']."\n<br>\n"; 
      return $key; 
     } 
    } 
    return null; 
} 

$key = find_zindex($array, 3); 
if($key) { 
    echo "The zindex was found at '$key'\n<br>\n"; 
} else { 
    echo "Fail: the zindex was not found\n<br>\n"; 
} 

$key = find_zindex($array, 4); 
if($key) { 
    echo "The zindex was found at '$key'\n<br>\n"; 
} else { 
    echo "Fail: the zindex was not found\n<br>\n"; 
} 

あなたは、特定のZIndexを持つすべてのキーの配列たい場合:

これは付属のZIndex検索値と一致するすべての要素を含む配列を構築し、をループします。終了すると、新しい要素の配列が返されます。何も見つからなければ、空と見なされる空の配列を返します。

function find_zindex($array, $search_key) { 
    $result = array(); 
    foreach($array as $key => $element) { 
     if(array_key_exists('zindex',$element) && $element['zindex']==$search_key) { 
      echo "Key '$key' has a zindex of ".$element['zindex']."\n<br>\n"; 
      $result[] = $key; 
     } 
    } 
    return $result; 
} 

$key = find_zindex($array, 3); 
if($key) { 
    echo 'The zindex was found at:'; 
    print_r($key); 
    echo "\n<br>\n"; 
} else { 
    echo "Fail: the zindex was not found\n<br>\n"; 
} 

$key = find_zindex($array, 4); 
if($key) { 
    echo 'The zindex was found at:'; 
    print_r($key); 
    echo "\n<br>\n"; 
} else { 
    echo "Fail: the zindex was not found\n<br>\n"; 
} 

あなたは、多くの場合のZIndexでデータを見つけようとしている場合、あなたは、配列を再設計したいと思うでしょうが:

これはちょうど最初の配列の要素への参照を持っている二番目の配列を作成します。これを実行すると、両方の配列で1つの代入で 'name'が 'new_name'に設定されるため、データが共有されていることがわかります。外部配列の各要素は、インデックスとzindexの両方を持つようになりました。

これは、$ arrayのすべての要素がzindexを持ち、zindexの値が一意であることを前提としています。いくつかの要素にzindexがないか、または重複したzindexがある場合は、この要素を変更する必要があります。

$array = array(
    'the-1'=> array('name'=>'lorem','pos'=>array('top'=>'90','left'=>'80'),'index'=>'the-1','zindex'=>2), 
    'the-2'=> array('name'=>'ipsum','pos'=>array('top'=>'190','left'=>'180'),'index'=>'the-2','zindex'=>1), 
    'the-3'=> array('name'=>'lorem ipsum','pos'=>array('top'=>'20','left'=>'30'),'index'=>'the-3','zindex'=>3) 
); 

$zarray = array(); 
foreach($array as &$value) { 
    $zarray[$value['zindex']] =& $value; 
} 
// optional: order the entries in zarray by their key 
ksort($zarray) 

print_r($array); 
echo "\n<br>\n"; 
print_r($zarray); 
echo "\n<br>\n<br>\n<br>\n<br>\n<br>\n"; 

$array['the-1']['name']='new_name'; 
print_r($array); 
echo "\n<br>\n"; 
print_r($zarray);