Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
1

Функции для работы с массивами

22.10.2019, 20:57. Показов 961. Ответов 24
Метки нет (Все метки)

Доброе время суток коллег, подскажите как правильно использовать "in_array"
надо найти в массиве массивов ключ - значение я писал такой бред:
if(in_array(array("quantity"=> 2.5023409 ),$courses)){
echo "найдено";
}
он не работает. Где я ошибся
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2019, 20:57
Ответы с готовыми решениями:

Функции для работы с массивами
Есть некий массив: яблоко => 1 (штук) груша => 4 апельсин => 5 груша => 3 яблоко => 2...

Функции для работы с массивами
Драсьте, помогите плиз сделать лабу по C++ :) Необходимо написать функции для работы с одномерными...

Функции для работы с массивами и матрицами
Помоги пожалуйста !!! Написать перегруженные функции (int, double, char) для выполнения...

Функции для работы с динамическими массивами
Объявить указатель на массив типа double и предложите пользователю выбрать его размер. Далее...

24
1050 / 722 / 350
Регистрация: 09.07.2018
Сообщений: 1,718
22.10.2019, 21:08 2
Esso11, а в доке почитать? in_array() ищет только значения, и в случае успеха возвращает булев тип.
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
22.10.2019, 21:29  [ТС] 3
Строитель,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Пример 3. Пример использования in_array() с массивом в качестве параметра needle
 
<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');
 
if (in_array(array('p', 'h'), $a)) {
    echo "'ph' найдено
";
}
 
if (in_array(array('f', 'i'), $a)) {
    echo "'fi' найдено
";
}
 
if (in_array('o', $a)) {
    echo "'o' найдено
";
}
?>
Результат выполнения данного примера:
 
'ph' найдено
 
  'o' найдено
c этого примера сделал вывод что не только

Добавлено через 1 минуту
Строитель, подскажите как тогда мне найти значение ....?

Добавлено через 5 минут
Строитель, значение в массиве есть но мне возвращается false
0
1050 / 722 / 350
Регистрация: 09.07.2018
Сообщений: 1,718
22.10.2019, 21:34 4
Цитата Сообщение от Esso11 Посмотреть сообщение
c этого примера сделал вывод что не только
Что не только что? Повторяю: in_array() ищет только значения, и в случае успеха возвращает булев тип. Для достоверности идём в доку и читаем там описание функции.

А что касается вашего примера (который скорее всего из книги), дак в нём всё правильно - in_array() проверяет наличие массива в массиве массивов.

Добавлено через 1 минуту
Цитата Сообщение от Esso11 Посмотреть сообщение
значение в массиве есть но мне возвращается false
Не может такого быть:
PHP
1
2
3
4
5
6
7
$a = array(
    array('p', 'h'),
    array('p', 'r'),
    'o'
);
 
var_dump( in_array(array('p', 'h'), $a) ); // boolean true
Добавлено через 2 минуты
Цитата Сообщение от Esso11 Посмотреть сообщение
подскажите как тогда мне найти значение ....?
in_array() успешно справляется с этим поиском. А если вам надо получить какое-то значение в одномерном массиве, то есть другие функции для работы с массивами.
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
22.10.2019, 21:37  [ТС] 5
Строитель, наверное не спустился к нужному массиву .... ладно спасибо

Добавлено через 1 минуту
Строитель, мне не надо одномерный массив. у меня массив двумерный
0
1050 / 722 / 350
Регистрация: 09.07.2018
Сообщений: 1,718
22.10.2019, 21:39 6
Цитата Сообщение от Esso11 Посмотреть сообщение
Строитель, мне не надо одномерный массив. у меня массив двумерный
Ок, и что вам нужно с этим массивом делать?
0
460 / 263 / 55
Регистрация: 22.08.2010
Сообщений: 1,199
Записей в блоге: 4
22.10.2019, 21:44 7
in_array - возвращает TRUE, если значение существует в массиве.
array_key_exists - проверяет, существует ли в массиве данный индекс или ключ.

Если
PHP
1
2
3
 if (array_key_exists('banana',$array)){
echo $array['banana'];
}
если
PHP
1
2
3
4
$os = array ("Mac", "NT", "Irix", "Linux");
if (in_array ("Irix", $os)) {
    print "Got Irix";
}
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
22.10.2019, 21:45  [ТС] 8
Строитель, найти ключ и значение в массиве массивов и сравнить его с введенной переменной от пользователя
0
1050 / 722 / 350
Регистрация: 09.07.2018
Сообщений: 1,718
22.10.2019, 21:50 9
Esso11, вы уверены? Потому что "найти ключ и значение" и "сравнить его с введенной переменной" уже порождают вопросы. Ключ и значение - это два параметра. Так что именно нужно в массиве искать для сравнения?
0
460 / 263 / 55
Регистрация: 22.08.2010
Сообщений: 1,199
Записей в блоге: 4
22.10.2019, 21:52 10
Цитата Сообщение от Esso11 Посмотреть сообщение
if(in_array(array("quantity"=> 2.5023409 ),$courses))
$cost = (in_array('2.5023409',$array))? '2.5023409'*$courses:'Фиг его знает';
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
22.10.2019, 21:56  [ТС] 11
Строитель, согласен, не подумал. В задании указано так: пользователь вводит число в форму, и это число нужно найти в двух двумерных массивах и уже их сравнить между собой. Но вот ты правильно сказали как найти в массиве нужный индекс не пойму ведь мы передаем только число без ключа...
0
460 / 263 / 55
Регистрация: 22.08.2010
Сообщений: 1,199
Записей в блоге: 4
22.10.2019, 21:57 12
Цитата Сообщение от Строитель Посмотреть сообщение
Потому что "найти ключ и значение" и "сравнить его с введенной переменной" уже порождают вопросы.
как я понял, ТС проверяет существование значения конверта и пытвается его присобачить к булеву ответу. Если уже в массиве есть это значение, но дальше массив не нужен, просто делаем конвертацию и получаем выхлоп.
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
22.10.2019, 21:59  [ТС] 13
Цитата Сообщение от esculap_ra Посмотреть сообщение
как я понял, ТС проверяет существование значения конверта и пытвается его присобачить к булеву ответу. Если уже в массиве есть это значение, но дальше массив не нужен, просто делаем конвертацию и получаем выхлоп.
я вообще не понял ваше сообщение
0
460 / 263 / 55
Регистрация: 22.08.2010
Сообщений: 1,199
Записей в блоге: 4
22.10.2019, 22:03 14
Или я не понял

Добавлено через 3 минуты
Тогда нужно проверить каждый массив по in_array
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
22.10.2019, 22:03  [ТС] 15
esculap_ra, приведу пример: есть рынок на нем продают два человека яблоки у одного яблоки по цене 10$ а у второго по 11$. И вот пользователь вводит к примеру в поле яблоки 3(это будет количество кг которых он хочет приобрести) и надо пройтись по двум массивам найти есть ли в них 3 кг яблок и сравнить сколько денег хотят за это количество кг один продавец и второй
0
1050 / 722 / 350
Регистрация: 09.07.2018
Сообщений: 1,718
22.10.2019, 22:07 16
Цитата Сообщение от Esso11 Посмотреть сообщение
как найти в массиве нужный индекс
array_search() ищет значение и возвращает индекс.
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
22.10.2019, 22:10  [ТС] 17
как данное значение введенное пользователем сравнивать с конкретным индексом в массиве? Нужно еле поле где надо вводить ключ который указан в массивах ?

Добавлено через 1 минуту
Строитель, наверное array_search() не совсем мне подойдет для моей задачи
0
460 / 263 / 55
Регистрация: 22.08.2010
Сообщений: 1,199
Записей в блоге: 4
22.10.2019, 22:11 18
Функция bool in_array (mixed needle, array haystack [, bool strict]) может принимать для проверки массив параметров, но не работает с двухмерными массивами данных. В твоем случае array("quantity"=> 2.5023409 ) не произойдет проверка, так как используется именованный массив, а in_array работает на массивах, типа (1,2,3,4,5).
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
22.10.2019, 22:12  [ТС] 19
Строитель, или все же можно пройтись по всему массиву вернет array_search() все индексы их сравнить с нужным мне в if() и потом так же с другим массивом проделать и результаты if() уже сравнивать между собой?!
0
460 / 263 / 55
Регистрация: 22.08.2010
Сообщений: 1,199
Записей в блоге: 4
22.10.2019, 22:15 20
Значит измени функцию
PHP
1
if (in_array('2.5023409 ', $arra['quantity']))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2019, 22:15

Какие есть функции для работы с массивами
Всем привет.Хочу узнать все функции для работы с массивами(как их крутить ,поворачивать по...

Создание шаблонной функции для работы с массивами разных типов данных
Здравствуйте. Столкнулся со следующей проблемой: не могу написать шаблонную функцию подсчета суммы...

Создать класс, в котором реализовать функции для работы с одномерными массивами
Ребят помогите с задачкой Создать класс, в котором реализовать функции для работы с...

Процедуры для работы с массивами
Здравствуйте , вот нужно пару заданий доделать , но просто физически не успеваю уже(и так уже 2 дня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.