Dizinin belli bir bölümünü başka bir dizide olup olmadığını denetlemek nasıl?

3 Cevap php

Ben bir iki birleştirici arrayes var ve kontrol etmek istiyorsanız

$array1["foo"]["bar"]["baz"] exists in $array2["foo"]["bar"]["baz"]

The values doesn't matter, just the "path". Does array_ intersect_ assoc do what I need?
If not how can I write one myself?

3 Cevap

Bu deneyin:

<?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');

?>

Sadece anahtarları olmadığını denetlemek gerekiyorsa deyimi eğer basit bir kullanabilirsiniz.

<?php
if (isset($array1["foo"]["bar"]["baz"]) && isset($array2["foo"]["bar"]["baz"]

)) { //exists }

array_key_exists?