Я не совсем уверен, что вы хотите здесь, поэтому вот несколько тестов, которые вы можете запустить на 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, вы захотите перепроектировать свой массив:
Это создает второй массив, который просто имеет ссылки на элементы в первом массиве.Если вы запустите это, вы увидите, что данные являются общими, потому что одно присваивание установит для 'name' значение 'new_name' в обоих массивах.Обратите внимание, что каждый элемент внешнего массива теперь имеет как индекс, так и zindex.
Это предполагает, что каждый элемент в $ array имеет zindex, а значение zindex уникально.Если некоторые элементы не имеют zindex или имеют повторяющиеся zindexes, вам нужно будет изменить это.
$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);