Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вопрос по массиву
Форумы портала PHP.SU » » Вопросы новичков » Вопрос по массиву

Страниц (1): [1]
 

1. Nizz - 01 Февраля, 2019 - 16:01:28 - перейти к сообщению
Добрый день ув. форумчане. Не получается обработать значения массива, подскажите пожалуйста функцию для задачи.

Есть массив:
PHP:
скопировать код в буфер обмена
  1.  
  2. [1] -> 13,14,
  3. [3] -> 13,76,
  4. [87] -> 43,
  5. )
  6.  


Значения массива - строка с id пользователей через ",".
Необходимо выполнить поиск по строке массива и вернуть ключи, где есть искомый id.
То есть, если у пользователя id "13", вернуть должно 1 и 3 ключ.
Применял in_array(), но тк. это строка - не получается вернуть нужные ключи.
Спасибо.
2. Строитель - 01 Февраля, 2019 - 16:28:16 - перейти к сообщению
Nizz
PHP:
скопировать код в буфер обмена
  1. $arr = [
  2.     1 => '13,14',
  3.     3 => '13,76',
  4.     87 => 43
  5. ];
  6.  
  7. $id = 13;
  8. $keys = [];
  9.  
  10. foreach ($arr as $k => $v) {
  11.     ! in_array($id, explode(',', $v)) ?: $keys[] = $k;
  12. }
  13.  
  14. print_r($keys);
  15. /*
  16.     Array
  17.     (
  18.         [0] => 1
  19.         [1] => 3
  20.     )
  21. */
3. Nizz - 01 Февраля, 2019 - 16:47:50 - перейти к сообщению
Строитель огромное вам спасибо !
4. LIME - 01 Февраля, 2019 - 17:17:51 - перейти к сообщению

Строитель обычные if уже скучно?))
как понт нормально, но в продакшен такое фу писать
5. Nizz - 02 Февраля, 2019 - 10:39:17 - перейти к сообщению
LIME , а как переписать условие под традиционный оператор if ?
6. Строитель - 02 Февраля, 2019 - 11:34:07 - перейти к сообщению
Nizz пишет:
а как переписать условие под традиционный оператор if ?
PHP:
скопировать код в буфер обмена
  1. $arr = [
  2.     1 => '13,14',
  3.     3 => '13,76',
  4.     87 => 43
  5. ];
  6.  
  7. $id = 13;
  8. $keys = [];
  9.  
  10. foreach ($arr as $k => $v) {
  11.     if (in_array($id, explode(',', $v))) {
  12.         $keys[] = $k;
  13.     }
  14. }
  15.  
  16. print_r($keys);
7. LIME - 02 Февраля, 2019 - 12:11:04 - перейти к сообщению

Строитель учи индексы бд...это наше все...с высоты опыта самоучки очень сильно рекомендую
освоишь btree++ остальное дело техники
и асинхронность почитай...очереди для начала...
мозги у тебя очень на месте
8. Nizz - 02 Февраля, 2019 - 13:45:07 - перейти к сообщению
Строитель еще раз большое вам спасибо. С оператором if - гораздо понятнее.
9. LIME - 02 Февраля, 2019 - 16:47:54 - перейти к сообщению
Nizz пишет:
Строитель еще раз большое вам спасибо. С оператором if - гораздо понятнее.
ыгм...спасибо вам большое))...
(Добавление)
Nizz нельзя структуру хранить в строке...от слова вообще
структурированные данные храни как один к многим или юзай json ...тоесть как nosql
10. Строитель - 02 Февраля, 2019 - 18:36:21 - перейти к сообщению
LIME пишет:

Строитель учи индексы бд...это наше все...с высоты опыта самоучки очень сильно рекомендую
освоишь btree++ остальное дело техники
и асинхронность почитай...очереди для начала...
мозги у тебя очень на месте
Спасибо Улыбка
(Добавление)
Nizz пишет:
Строитель еще раз большое вам спасибо. С оператором if - гораздо понятнее.

Да так-то не за что Закатив глазки

 

Powered by ExBB FM 1.0 RC1