我有关于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(空($ rhw [103] [1] [2]))--- 我不知道如何自动检查空槽的位置($ rhw [103] [1] [2])。
,例如,
if (empty($rhw[][][])) {
insert "Class C";
} else {
echo "The slot has been fulfilled";
}
但它无法继续。
谢谢你们,伙计们! :)
答案 0 :(得分:0)
取自in_array() and multidimensional 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";
}
或者为每个多维位置使用check isset函数。
function check_multidimensional($data, $a, $b, $c)
{
return isset($data[a]) && isset($data[$a][$b]) && isset($data[$a][$b][$c]);
}
您甚至可以为N维创建更通用的函数。
答案 1 :(得分:0)
Coba ini deh udah di edit。 penasaran: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);