كيفية معرفة ما إذا كان جزء معين من مجموعة موجود في مجموعة أخرى؟
-
10-07-2019 - |
سؤال
ولدي اثنين arrayes النقابي وأريد للتحقق مما إذا
$array1["foo"]["bar"]["baz"] exists in $array2["foo"]["bar"]["baz"]
والقيم لا يهم، فقط "المسار". هل array_ intersect_ ASSOC تفعل ما أحتاج إليه؟ < br> و إن لم يكن كيف يمكنني كتابة واحدة نفسي؟
المحلول
وجرب هذا:
<?php
function array_path_exists(&$array, $path, $separator = '/')
{
$a =& $array;
$paths = explode($separator, $path);
$i = 0;
foreach ($paths as $p) {
if (isset($a[$p])) {
if ($i == count($paths) - 1) {
return TRUE;
}
elseif(is_array($a[$p])) {
$a =& $a[$p];
}
else {
return FALSE;
}
}
else {
return FALSE;
}
$i++;
}
}
// Test
$test = array(
'foo' => array(
'bar' => array(
'baz' => 1
)
),
'bar' => 1
);
echo array_path_exists($test, 'foo/bar/baz');
?>
نصائح أخرى
إذا كنت بحاجة فقط لمعرفة ما اذا كان وجود المفاتيح التي يمكن استخدامها بسيط إذا البيان.
<?php
if (isset($array1["foo"]["bar"]["baz"]) && isset($array2["foo"]["bar"]["baz"]
و)) { // موجود }
لا تنتمي إلى StackOverflow