IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   поиск по массиву (https://www.imho.ws/showthread.php?t=24467)

dob 15.03.2003 15:45

поиск по массиву
 
ПИШУ В PHP

проблема с array_search

вот часть скрипта

$k = array_search($a,$b);
if( $k == false){
echo '<b>'.$fall.'</b>';
}else
{
echo '<b>'.$b[$k].'</b>';
}

и чёй то оно не работает =(

dob 15.03.2003 19:50

ну скажите профессионалы чего у меня не так?
мож надо поставить
if($k === fakse)
?

Stasik 15.03.2003 21:05

да.... функция возвращает NULL а не FALSE

$k = array_search($a,$b);
if( $k === false){
echo '<b>'.$fall.'</b>';
}else
{
echo '<b>'.$b[$k].'</b>';
}

Aeon 15.03.2003 21:12

как насчёт
PHP код:

$k array_search($a,$b);
if(empty(
$k))
{
    echo 
'<b>'.$fall.'</b>';
}
else
{
    echo 
'<b>'.$b[$k].'</b>';



dob 15.03.2003 22:11

ё маё вот у меня что я пишу короче

Код:

$objects=explode(",",$user[objects]);
$clips=array("clip1","clip2","clip3","clip4","clip5","clip6","clip7","clip8","clip9","clip10","clip11");
$ned=array_search($clips,$objects);
if($ned===false){
echo "<img src=\"http://myhost.ru/i/w1.gif\" width=\"60\" height=\"20\">";
}else{
echo "<img src=\"http://myhost.ru/i/".$objects[$ned].".gif\" width=\"60\" height=\"20\">";
//тут кол-во вещей не может быть >1 ну никак не может.
}

а он мне выдаёт ошибку , причём пишет строку например 70 , а хотя у меня в скрипте 69 строк всего....в переменной $objects - тоже содержутся названия вещей.... AEON мне предлагал один способ как сделать но он был не гибким , потому как некоторых вещей может быть более чем 1 штука , а этот более гибок , но не работает 8(
я всё вызываю правильно,подключаюсь ко всему и т.д и т.п ошибка в этой части скрипта а где там?:баран:

dob 15.03.2003 22:39

СЛАВА AEON!!!!!!!!!С ЕГО СКРИПТОМ ЗАРАБОТАЛО!!!!

dob 15.03.2003 22:42

ан нет =( он всё время терь выдаёт как empty , даже если не пусто =(

Stasik 16.03.2003 01:38

вот те процедурка

PHP код:

function scan_array($array$value){
 for(
$i=0$i<count($array); $i++){
  if(
$array[$i]==$value)return($i);
 }
 return(
false);
}

$clips=array("clip1","clip2","clip3","clip4","clip5","clip6","clip7","clip8","clip9","clip10","clip11");
$value="clip1";

if(
scan_array($clips,$value)!=false){echo $clips[scan_array($clips,$value)];}else{echo "not found";} 


dob 16.03.2003 10:21

Стасик спасибо большое, но у меня $value как у тебя написано - является массивом и там разные вещи и не тольео именно такого хар-ра.
Можно ли данный пример использовать для массива??

Stasik 16.03.2003 15:39

можно всё.... опиши подробнее... сделаем

dob 16.03.2003 20:02

Описываю подробнее всё что у меня есть и всё что надо получить
 
Главное до конца дочитайте!
Значит так я получаю список всех вещей со страницы , после открытия и преобразований , с помощью $user[objects]
теперь я для удобства использования я делаю так :
$objects = explode("," , $user[objects]);
С этим проблем нет.
2) для того , чтобы найти нужную мне вещь в массиве $objects я хочу использовать функцию array_search , но как показали выше сказаные ответы - не выходит...
3)Мне необходимо просмотреть на идентичность значения их двух массивово , т.е. например я хочу найти все спортивные вещи - у меня есть массив
$sport=array("lighi","boks","grusha","streli" и т.д );
предположим , что у меня в массиве $objects такие значения
("havchik","lampa","lighi","soska","valenki"и т.д. );

Вот значит теперь постараюсь изложить ещё понятнее что именно мне требуется : поиск на сходство по двум массивам
ИЗВЕСТНО ЧТО ВЕЩЬ МОЖЕТ БЫТЬ ТОЛЬКО ОДНА ,НО В ОДНОМ ИЗ ВАРИАНТОВ МОЖЕТ БЫТЬ ДО 3Х
и так мне надо найти номер вещи , которая соостветсвует одному из значений массива $sport - и обратится к ней - вывести картинку , которая соостветсвует этой вещи .
Как я планировал обращаться в стиле $objects[$(а тут номер вещи)] -- я это хотел сделать с помощью array_search , но тама как я понял тока для булей доступно....
В принцапе всё что не понятно скажи поясню..:idontnow:

Stasik 16.03.2003 23:54

PHP код:

<?
function cross_arrays($array1, $array2){
$array3=array();
 for($i=0; $i<count($array1); $i++){
  for($j=0; $j<count($array2); $j++){
   if($array1[$i]==$array2[$j])array_push($array3, $array2[$j]);
  }
 }
 return($array3);
}

$sport=array("lighi","boks","grusha","streli");
$objects=array("havchik","lampa","lighi","soska","valenki","boks");

$results=cross_arrays($objects, $sport);

echo join(", ", $results);
?>

вот... попускай

dob 17.03.2003 15:00

Warning: Bad arguments to join() in /usr/local/home/host/www/bla.php on line 65
...вот что мне выдаёт после того , как я всё сделал как ты написал..

Aeon 17.03.2003 22:08

а ты уверен что в результате что-то выходит?
PHP код:

// попробуй заменить:
echo join(", "$results);
// на
if(!empty($results))
{
    echo 
'<pre>';
    
print_r($results);
    echo 
'</pre>';
}
else
{
    echo 
'<strong>no results found</strong>';



dob 17.03.2003 23:24

Пиво с меня без базара!

Stasik 17.03.2003 23:28

:gigi: проглядел


Часовой пояс GMT +4, время: 03:24.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.