كيفية معرفة ما إذا كان جزء معين من مجموعة موجود في مجموعة أخرى؟

StackOverflow https://stackoverflow.com/questions/1217376

  •  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"]

و)) {         // موجود     }

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top