Пробую так: $array = array("Одноклассник", "ПТУшник"); $key = array_search('клас', $array); не получается
Что требуется найти? В вашем случае array_search вернет false так - как, "клас" значение отсутствует, и ключ вернуть не получится.
array_search - Возвращает ключ значение каторые ты шукаеш!!! Код (PHP): $array = array("клас", "ПТУшник"); $key = array_search('клас', $array);//вернет 0
Но это ведь язык программирования? Так вотс а проблям? Летс ду ит квик! Код (PHP): <?php $array = array("Одноклассник", "ПТУшник","Мастеркласс"); $result = array(); foreach ($array as $key=>$val){ if (strpos($val, 'класс')!==false){ $result[] = $key; } } var_dump ($result); //array(2) { [0]=> int(0) [1]=> int(2) } ?> Добавлено спустя 1 минуту 38 секунд: Сначала надо читать документацию к функциям, а потом уже их использовать. А не пытаться догадываться по названию, что она делает.
А я переписал на свою функцию, оцените function array_search2($search,$arr) { if($search===""){return 0;} for($i=0;$i<count($arr);$i++) { if(strpos($arr[$i],$search)!== false) { $res = $i; return $res; } } }
Почему Код (Text): if($search==="") { return 0; } ?? А если надо найти элементы с пустой строкой? Код (Text): if(strpos($arr[$i],$search)!== false) { $res = $i; return $res; } 1)Зачем делать $res = $i; return $res;, если можно return$i? 2)А если в массиве больше одного элемента, удовлетворяющего условиям поиска? Что тогда делать? А теперь внимательно изучи тот код, что я написал и посмотри, как там решаются все вышеописанные проблемы. Вот, в виде функции с теми же входящими параметрами: Код (PHP): function array_search2($search,$arr) { $result = array(); foreach ($arr as $key=>$val){ if (strpos($val, $search)!==false){ $result[] = $key; } } return $result; }
https://gist.github.com/artoodetoo/0379133f2c9fe88407ff Код (PHP): function array_usearch($needle, $haystack, $callback) { foreach ($haystack as $key => $value) { if (call_user_func($callback, $needle, $value) !== false) { return $key; } } return false; }
Что делать, если надо вернуть несколько ключей? Зачем так усложнять простые вещи, ребят? Оверинжиниринг - это зло.
очевидно написать другую функцию ))) Добавлено спустя 4 минуты 25 секунд: Fell-x27, я тебя правильно понял, ты имел в виду "что делать, если вместо твоей функции надо написать функцию как у меня?" ))) p.s. выбор такой: функция, которая умеет больше, чем требуется и функция, которая делает не то, что требуется. слово за топикстартером.