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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: выбор из масива значений равные значениям другого масива

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
MBmusic
Отправлено: 02 Сентября, 2013 - 12:38:38
Post Id


Посетитель


Покинул форум
Сообщений всего: 481
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




в общем есть два масссива. Массив $arr:



Массив $arrWeek:
PHP:
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => Mo
  4.     [1] => Tu
  5.     [2] => We
  6.     [3] => Th
  7.     [4] => Fr
  8.     [5] => Sa
  9.     [6] => Su
  10. )
  11.  


мне нужно из массива $arrWeek выбрать значения по ключу которые равняются значению из первого массива $arr......то есть в данном случае должно мне вернуть 'Sa'......тут вроде бы нужно использовать функцию array_intersect_key, но что то не получается сделать...
 
 Top
Ch_chov
Отправлено: 02 Сентября, 2013 - 12:50:59
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Если не получается, то показывайте свой код
 
 Top
MBmusic
Отправлено: 02 Сентября, 2013 - 12:53:49
Post Id


Посетитель


Покинул форум
Сообщений всего: 481
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




вот код:

PHP:
скопировать код в буфер обмена
  1.  
  2. $weekarr = array(
  3.                         0 => 'Mo',
  4.                         1 => 'Tu',
  5.                         2 => 'We',
  6.                         3 => 'Th',
  7.                         4 => 'Fr',
  8.                         5 => 'Sa',
  9.                         6 => 'Su'
  10.                 );
  11.                
  12. $m = array_intersect_key($weekarr, unserialize($scheduler['weekdays']));
  13.  


unserialize($scheduler['weekdays']) - из базы возвращает массив:

(Добавление)
просто если теперь написать:


то выведет:


а должно вывести:

(Отредактировано автором: 02 Сентября, 2013 - 13:02:55)

 
 Top
Ch_chov
Отправлено: 02 Сентября, 2013 - 13:18:14
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Поменяйте местами ключи и значения в массиве, который возвращается из базы.
array_flip
 
 Top
MBmusic
Отправлено: 02 Сентября, 2013 - 13:57:45
Post Id


Посетитель


Покинул форум
Сообщений всего: 481
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




Ch_chov, спасибо!
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Сентября, 2013 - 14:40:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Ch_chov пишет:
Поменяйте местами ключи и значения в массиве

Вообще-то есть функция array_intersect
 
 Top
Ch_chov
Отправлено: 02 Сентября, 2013 - 15:05:47
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




armancho7777777 пишет:
Вообще-то есть функция array_intersect
А как она поможет выбрать значения по ключу?
 
 Top
EuGen Администратор
Отправлено: 02 Сентября, 2013 - 15:38:08
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ch_chov
Ровно также, как и array_intersect_key - нет разницы, делать ли array_intersect_key(array_flip($rgOne), $rgTwo) или array_intersect($rgOne, array_keys($rgTwo)) (разве что второе - писать короче.
Хотя нет, есть отличие - array_flip не всегда сработает (значения могут быть неприводимыми к скалярному типу, то есть не являться верными ключами), тогда как array_keys - всегда сработает (ключи априори существуют). Но в случае автора темы - разницы всё же нет.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Ch_chov
Отправлено: 02 Сентября, 2013 - 15:46:28
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




EuGen пишет:
нет разницы

Разница в том, что результат будет перевёрнутый.
 
 Top
EuGen Администратор
Отправлено: 02 Сентября, 2013 - 15:49:41
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ch_chov
В контексте того, что нужно найти элементы - это одно и то же (в том плане, что нет разницы, известно ли значение элемента или его ключ в массиве). Визуально - согласен, отличие будет.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Сентября, 2013 - 17:50:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Ch_chov пишет:
А как она поможет выбрать значения по ключу?

Пардон, с задачей ознакомился мимолётом.
Тогда да


EuGen пишет:
значения могут быть неприводимыми к скалярному типу

Думаю, что там всё-таки в первом массиве будут именно скалярные типы значений.

(Отредактировано автором: 02 Сентября, 2013 - 17:56:15)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB