in_array(): Wrong datatype for second argument in

mond

Новичок
in_array(): Wrong datatype for second argument in

<?
#!/usr/bin/php
$host="localhost"; //хост
$user="root";
$pass=""; //password
$poisk=explode(" ", $_POST["name"]);//преобразовал в массив поисковую фразу
$res_poiska=array();
global $res_poiska;
global $cdname;
$link=mysql_connect($host,$user,$pass);//подключаемся к mysql
$db=mysql_select_db("world");
$result=mysql_query("select * from cdgames");
while($cdname=mysql_fetch_array($result)){//массив с ключами из названий полей(столбцов)
for ($I=0; $I<=count($poisk)-1; $I++){
if (in_array ($poisk[$I], "$cdname[name]")) {//вот здесь возникает ошибка in_array(): Wrong datatype for second argument in
$res_poiska=$cdname; echo "$res_poiska<br>"; } } }//переход на новую строку массива $cdname ?>
 

mond

Новичок
Если убрать кавычки, то кроме вышеперечисленной ошибки на той же строке будет возникать еще ошибка: Use of undefined constant name - assumed 'name'.
В предыдущем посте забыл записать, думал, что может после if переменная $cdname неизвестна, обьявил ее глобальной, но не помогло. Но может все же правильно мыслю, только вот, что-то неправильно в скрипте записал.
 

tf

крылья рулят
mond хорош прикалыватся
в мане
bool in_array ( mixed needle, array haystack [, bool strict] )
а у тебя
in_array (mixed needle, string haystack)
 

mond

Новичок
Из мануала:
mysql_fetch_array -- Обрабатывает ряд результата запроса, возвращая ассоциативный массив, численный массив или оба.
Так что $cdname=mysql_fetch_array($result) - массив. С чего это вдруг переменная $cdname в in_array стала текстовой.
Ладно если будут еще подсказки, то отвечу завтра к 3 часам ночи (по Москве).
 

SiMM

Новичок
> С чего это вдруг переменная $cdname в in_array стала текстовой.
А при чём здесь $cdname, когда в скрипте у вас $cdname['name']?
 

mond

Новичок
Только сейчас увидел ответsage. Не пойму зачем нужны одинарные кавычки, но в любом случае ошибка о неправильном типе второго аргумента остается.
 

SiMM

Новичок
mond, вам же сказали - вы подсовываете in_array'у строку. А не массив. Неужели так сложно понять?
http://phpfaq.ru/debug
PHP:
var_dump($cdname['name']);
 

mond

Новичок
Остановился на таком варианте:
while($cdname=mysql_fetch_array($result)){
for ($I=0; $I<=count($poisk)-1; $I++){
if (stristr($cdname['name'], $poisk[$I])) {
echo $cdname["name"];
echo "$cdname<br>"; Благодарю.
 

tf

крылья рулят
mond ужас. иди учи php работа с типами данных
 
Сверху