我想在多维数组中找到值。我有一个像这样的数组:
try:
if isinstance(var1,str) == 0:
raise TypeCheckingException(type(var1),str)
if isinstance(var2,str) == 0:
raise TypeCheckingException(type(var2),str)
if isinstance(var3,int) == 0:
raise TypeCheckingException(type(var3),int)
if isinstance(var4,int) == 0:
raise TypeCheckingException(type(var4),int)
if isinstance(var5,str) == 0:
raise TypeCheckingException(type(var5),str)
if isinstance(var6,float) == 0:
raise TypeCheckingException(type(var6),float)
except TypeCheckingException, tce:
print "Type expected input " + str(tce.type_in) + " while type expected is " + str(tce.type_exp) + "."
我找到了here这个功能:
array(4) {
[0]=> array(2) {
[0]=> string(3) "840"
[1]=> string(3) "841" }
[1]=> array(1) {
[0]=> string(3) "842" }
[2]=> array(4) {
[0]=> string(3) "333"
[1]=> string(3) "723"
[2]=> string(3) "749"
[3]=> string(3) "750" }
[3]=> array(4) {
[0]=> string(3) "248"
[1]=> string(3) "268"
[2]=> string(3) "269"
[3]=> string(3) "270" }
}
但是这个if语句:
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;
}
没有搜索......我真的不知道为什么。我做错了什么人?我已多次分析我的代码,似乎没问题。
修改 我有这个:
if(!$this->in_array_r($id, $myArray) {}
但似乎foreach($koszyk as $Id_produkty => $Ilosc) {
if(!$this->in_array_r($Id_produkty, $myArray)) {
// If the Id_produkty variable is not in $myArray I want to skip to the next element in $koszyk
continue;
}
// Here is mySql query and I'm retrieving data depends on $Id_produkty
}
函数退出代码之后......它不会为我返回任何值。
哇,当我将error_reporting设置为E_ALL时出现此错误:调用未定义的函数in_array_r()我必须弄清楚为什么会这样
EDIT2:
好的,我得到了这个,我必须在调用in_array_r函数之前添加in_array_r
。
答案 0 :(得分:0)
您是否要求在多维数组中使用in_array()函数? 如果是这样,那么这段代码可能就是你所问的,但你的问题并不清楚。
function in_multiarray($elem, $array)
{
$top = sizeof($array) - 1;
$bottom = 0;
while($bottom <= $top)
{
if($array[$bottom] == $elem)
return true;
else
if(is_array($array[$bottom]))
if(in_multiarray($elem, ($array[$bottom])))
return true;
$bottom++;
}
return false;
}
if(in_multiarray(840,$arrayValue)){
echo "value is present in the array";
}
答案 1 :(得分:0)
好的,我得到了这个,我必须在调用in_array_r函数之前添加$this->
。我弄明白了,因为我将error_reporting设置为E_ALL,错误是:调用未定义的函数in_array_r()