2

3次元配列についてコーディングしています。空のスロットがどこにあるかを自動的に確認してから、空の配列 ($rhw[104][1][2]) 値クラス C を挿入する関数が必要です。

コーディング構造は、

$rhw[101][1][2] = "Class A";
$rhw[102][1][2] = "Class B";
$rhw[103][1][2] = "";

そして、私は以下のコーディングのようにすることができます、

if (empty($rhw[103][1][2])) {
    echo "TRUE";
} else {
    echo "FALSE";
}

しかし、すでに次のように宣言されています --- if (empty($rhw[103][1][2])) --- 空のスロットがどこにあるかを自動的に確認する方法がわかりません (これは $rhw[103][ です) 1][2])。

そのような、

if (empty($rhw[][][])) {
    insert "Class C";
} else {
    echo "The slot has been fulfilled";
}

しかし、それは続行できません。

君たちありがとう!:)

4

2 に答える 2

0

Coba ini deh udahdiedit。ペナサラン:p

$rwh = array(
   101 => array( 1 => array(1 => 'Value key 1', 2 => 'Class A')),
   102 => array( 1 => array(1 => 'Value key 1', 2 => 'Class B')),
   103 => array( 1 => array(1 => 'Value key 1', 2 => ''))
);

echo 'PERTAMA : '.print_r($rwh);

function emptyArray($array = array() , $newval = '')
{
    $key_val = array();

    if(is_array($array) && !empty($array))
    {
        foreach($array as $key => $value)
        {
            $key_val[$key] = emptyArray($value, $newval);
        }
    }
    else if(empty($array))
        return $newval;
    else
        return $array;

    return $key_val;
}

$hasil = emptyArray($rwh, 'Class C');
echo "AKHIR : ".  print_r($hasil);
于 2013-03-19T04:39:39.517 に答える
0

in_array() および多次元配列から取得

in_array() does not work on multidimensional arrays. You could write a recursive function to do that for you:

function in_array_r($needle, $haystack, $strict = false) {
    foreach ($haystack as $item) {
        if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
            return true;
        }
    }

    return false;
}

使用法:

$b = array(array("Mac", "NT"), array("Irix", "Linux"));
echo in_array_r("Irix", $b) ? 'found' : 'not found';

特定の位置を確認するには、より単純なソリューションを使用できます。

if(isset($rhw[103]) && isset($rhw[103][1]) && isset($rhw[103][1][2]))
{
    echo "TRUE";
} 
else 
{
    echo "FALSE";
}

または、多次元位置ごとに isset をチェックする関数を使用します。

function check_multidimensional($data, $a, $b, $c)
{
    return isset($data[a]) && isset($data[$a][$b]) && isset($data[$a][$b][$c]);
}

N 次元のより一般的な関数を作成することもできます。

于 2013-03-19T02:41:57.140 に答える