2012-06-22 4 views
0

Кажется, у меня проблема с проверкой наличия строки в моем массиве. Вероятно, действительно очевидный ответ на мой вопрос простил меня, но я новичок в PHP.Не удается получить значение из массива

Во всяком случае вот мой код:

while($row = mysql_fetch_assoc($result)) 
{ 
    $result_array[] = $row; 
} 

if (in_array("496891", $result_array)) 
{ 
echo "true"; 
} 
else 
{ 
echo "false"; 
} 

массив выглядит следующим образом:

Array ([0] => Array ([ID] => 496891) [1] => Array ([ID] => 1177953)) 

Мой код всегда повторяет ложь. Кто-нибудь знает, что я делаю неправильно?

Благодаря

+2

in_array проверяет только «первый» уровень массива. У вас многомерный. – OptimusCrime

ответ

3

У вас есть вложенный массив и должны проверить по каждому пункту, как так:

function in_multidimensional_array($val, $array) { 
    foreach($array as $key => $value) { 
    if (in_array($val, $array[$key])) { 
     return true; 
    } 
    } 
    return false; 
} 

Теперь вы можете проверить, если значение 496891 существует с помощью:

if(in_multidimensional_array('496891', $result_array)) { 
    print 'true'; 
} else { 
    print 'false'; 
} 
+0

Спасибо, отлично работает – RyanDreggs

0

Вы поиск строки, но ваш массив содержит числовые значения. Вам нужно будет убедиться, что вы вставляете его в виде строки, чтобы вернуть значение true или каждое поле в виде строки перед поиском.

2

Решение Кристера работает только в том случае, если в вашем MySQL-цикле имеется только одна строка. Это будет проверять все результаты.

while($row = mysql_fetch_assoc($result)) 
{ 
    $result_array[] = $row; 
} 

$found = false; 
foreach ($result_array as $v) { 
    if (in_array("496891", $v)) { 
     $found = true; 
    } 
} 

if ($found == true) 
    echo 'true'; 
else 
    echo 'false'; 
Смежные вопросы