0

私はそのような配列を持っています。これは自動的に構築され、長さが動的です。

$arr = array('k1','k2','k3','k4',);

そして、私はすでに存在する array を持っています。以下でこれを行うのと同じように動的$exArrにチェックするにはどうすればよいですか?

if($exArr[$arr[0]][$arr[1]][$arr[2]][$arr[3]]) echo 'IT EXISTS';

動的に構築された配列には、チェックするシーケンシャル キーが 1 つだけ、または最大 10 個まである可​​能性があることに注意してください。

ありがとう

編集

より明確にするために、動的であるが値のみを含む配列があります。どんな長さでも構いません。

動的に構築された配列は別の配列のキーに対応しています。動的に構築された配列のすべての値が正しいことを確認し、値を指していることを確認する方法が必要です。

$dynamic = array('one', 'two', 'three');

$existing = array('one' => array('two' => array('three' => array(true))));

以下のステートメントが正しいため、上記は true と評価されます。

if($existing[$dynamic[0]][$dynamic[1]][$dynamic[2]]) echo 'WOO';

私が抱えている問題は、動的配列がまさにそれだということです! 長さは 1 か 50 の可能性があります。したがって、単純な古い if ステートメントを使用しても、ここでは機能しません。

再度、感謝します

4

2 に答える 2

1
<?php
$dynamic = array('one', 'two', 'three');

$existing = array('one' => array('two' => array('three' => array(true))));

function check($dynamic, $existing) {
    foreach ($dynamic as $key ) {
        if (!isset ($existing [$key])) {
                    // return false;
            throw new Exception("{$key}");
        }
        $existing = $existing [$key];
    }
    return true;
}

try {
    check($dynamic, $existing);
} catch (exception $e) {
    echo "Invalid! On key: {$e->getMessage()}\n\n"; exit;
}

echo "Valid if it gets here!\n\n";

$dynamic = array('one', "invalid", 'two', 'three');

try {
    check($dynamic, $existing);
} catch (exception $e) {
    echo "Invalid! On key: {$e->getMessage()}\n\n"; exit;
}

echo "Valid if it gets here!\n\n";

テスト: http://eval.in/12819

return false の throw を置き換えることができます

于 2013-03-16T05:16:15.183 に答える
0

これは、一意の配列 A のキーを多次元配列で検索します。見つかったキーは配列 C に格納されます。これがお役に立てば幸いです。

<?php

$arrayA = array("a", "b", "c", "h", "p");

$arrayB = array("a" => array("g" => array("c" => array("d" => "x"))));
$arrayC = array();

function searchKeys($array) {
    global $arrayA;
    global $arrayC;

    foreach ($array as $key => $value) {

        if (in_array($key, $arrayA)) {
            $arrayC[] = $key;
        }

        if (is_array($value)) {
               searchKeys($value);
        }

    }
}

searchKeys($arrayB, $arrayA);
print_r($arrayC);
?>
于 2013-03-16T05:16:38.930 に答える