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

Работа с двумерным массивом

05.11.2019, 11:45. Показов 1699. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день коллеги подскажите как мне вывести нужные массивы с двумерного массива и сумму покупки нужного количества кг яблок.
Пример:

HTML5
1
2
3
4
<form method="POST" action="Apple.php">
    Количество яблок на покупку:<input type="text" name="count">
    <button type="submit">send</button>
    </form>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
array(Apple) {
  [0]=> array(6) {
    ["trade_id"]=> string(14) "118759074"
    ["type"]=> string(9) "sell"
    ["quantity"]=>string(14) "2.1057588"
    ["price"]=>string(14) "61.776658"
    ["amount"]=>string(17) "130.08674121"
    ["date"]=>string(15) "1572938931"
  }
  [1]=>array(6) {
    ["trade_id"]=> string(14) "118760045"
    ["type"]=>string(9) "sell"
    ["quantity"]=> string(14) "1.8973346"
    ["price"]=> string(14) "61.782999"
    ["amount"]=>string(17) "117.22302169"
    ["date"]=>string(15) "1572939318"
HTML5
1
2
<form method="POST" action="Apple.php">
        <button type="submit">send</button>
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.11.2019, 11:45
Ответы с готовыми решениями:

Работа с двумерным массивом
Подскажите что делаю не так, у меня есть трехмерный массив в котором записан такой двумерный массив: =&gt;array(100){ ...

Работа с двумерным массивом
Очень прошу помощи!! SQL запросом взял переменную из БД. &quot;Конвертировал&quot; в понятный вид: $gorod=unserialize($row000); ...

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

30
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
05.11.2019, 12:17
Если сумма гарантированно одинаковая у каждого яблока, то summa * count($array) , иначе перебором
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
05.11.2019, 12:27  [ТС]
crautcher, в массиве цены на яблоки у каждого подмассива разные, потому и затрудняюсь сам понять как это сделать. Т.е. мне надо, к примеру foreach-ем пройтись по массиву зайти в подмассив, там сравнить количество кг с введенным числом от пользователя если оно меньше чем у пользователя надо идти в след. массив. это я как бы понял. Но как мне в следующем массиве построить логику? Ведь мне уже надо сравнивать не введенное число пользователя а тот остаток от числа который остался при вычитании количества кг яблок с первого массива и количества кг запрашиваемых пользователем.
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
05.11.2019, 12:56
Кто мешает вести счетчик вне массива?
PHP
1
2
3
4
5
6
7
$counter = 0;
foreach($array1 as $key => $value ){
   $counter = ... //some math
}
foreach($array2 as $key => $value ){
   $counter = ... //some math
}
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
05.11.2019, 14:11  [ТС]
crautcher, не пойму как ваш пример переписать под мой массив
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
05.11.2019, 14:27
Перебираешь яблоки. Считаешь сумму килограмов, пока она не превышает запрошенную сумму.

Ну я не знаю, что посоветовать. Работа с циклами, это ведь азы. Почитайте уроки, статьи
"работа с массивами php" => google
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
05.11.2019, 14:37  [ТС]
crautcher, я вроде понимаю что вы имеете ввиду, работать с циклами я умею. Но не пойму как сделать правильно

Добавлено через 6 минут
смотрите к чему я пришел :
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
$res=0;
foreach($new_arr as $key=> $value){   // прохожусь  по двумерному массиву
$res=$c-floatval($value['quantity']);     // вычитаю разницу между введенным числом ($c) и  количеством кг  в массиве и 
                                                                 записываю в  $res;
 
    if($res<$value['quantity']) {  // проверяю  если  остаток от  запрашиваемых кг  меньше чем следующее значение  
                                                      $value['quantity'] то  вывожу  ответ
echo "оформить покупку".$c;
}
else{
    $sum=$res-floatval($value['quantity']);  // иначе вычитаю  дальше  что бы  найти  сколько  массивов надо пройти что 
                                                                  бы  в итоге получить  нужное количество  кг  яблок
}
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
05.11.2019, 14:53
Странная математика, я понял, что примерно это нужно:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
$summaryQuantity = 0;
$applesBascet = [];
 
foreach ($new_arr as $key => $value) {
 
    if (($summaryQuantity + $value['quantity']) > $c) {
        break; //already have enough apples
    }
 
    $summaryQuantity += $value['quantity'];
    $applesBascet[] = $value;
 
}
 
?>
Набралось яблок на <?= $summaryQuantity ?>кг. Яблоки
<pre>
    <?php print_r($applesBascet) ?>
</pre>
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
05.11.2019, 15:01  [ТС]
crautcher, я тупой потому прошу прощение если долго недогоняю

Добавлено через 5 минут
crautcher, могли бы объяснить вот эту строку в вашем коде: $applesBascet[] = $value;
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
05.11.2019, 15:02
Есть массив, условная карзина. Если условие подходит, складывает в карзину яблоки.
0
 Аватар для TolikD
117 / 81 / 36
Регистрация: 30.07.2017
Сообщений: 371
05.11.2019, 15:51
Цитата Сообщение от Esso11 Посмотреть сообщение
могли бы объяснить вот эту строку
Если на пальцах, то эта строка в цикле
PHP
1
$applesBascet[] = $value;
аналогична последовательности
PHP
1
2
3
4
$applesBascet[0] = $value;
$applesBascet[1] = $value;
$applesBascet[2] = $value;
...
Индекс автоматом подставляется PHP в виде последовательных числовых индексов.
При этом, если в массиве уже имеются значения
PHP
1
$applesBascet = array(0, 1, 2, 3);
тогда индекс начнется с последующего элемента
PHP
1
2
3
4
5
# Индексы 0, 1, 2, 3 уже существуют
$applesBascet[4] = $value;
$applesBascet[5] = $value;
$applesBascet[6] = $value;
...
Для ассоциативного массива, не с числовыми индексами значения добавятся начиная с индекса 0
PHP
1
2
3
4
5
6
$applesBascet = array(
    'a' => 0,
    'b' => 1,
    'c' => 2,
    'd' => 3);
$applesBascet[] = $value; # Присвоит $applesBascet[0] = $value;
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
05.11.2019, 16:38  [ТС]
crautcher, у меня вопрос если число введенное будет не 1 кг к примеру а 0,1 т.е. 100 гр то результат выходит 0 почему?

Добавлено через 23 минуты
не пойму почему не выходит набрать полную цифру заказа у меня получается что то вроде такого :
набралось яблок на 1.18558256 кг
Array
(
[0] => Array
(
[trade_id] => 118814903

[type] => sell

[quantity] => 0.20733556

[price] => 63.06000001

[amount] => 13.07458041

[date] => 1572958980

)

[1] => Array
(
[trade_id] => 118815173

[type] => sell

[quantity] => 0.978247

[price] => 63.06000001

[amount] => 61.68825582

[date] => 1572959081

)

)
А я то вводил число 2
0
 Аватар для TolikD
117 / 81 / 36
Регистрация: 30.07.2017
Сообщений: 371
05.11.2019, 16:55
Цитата Сообщение от Esso11 Посмотреть сообщение
0,1
Если ввести в форму именно такое значение, то это будет 0, так как PHP не воспринимает разделение дробной части запятой, надо точкой 0.1
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
05.11.2019, 17:09  [ТС]
TolikD, не я там точку хотел поставить, у меня именно проблема что если я ввожу дробное число то с массива не показывает первый подмасив который мне нужен и которого хватит что бы приобрести нужное количество яблок
0
 Аватар для TolikD
117 / 81 / 36
Регистрация: 30.07.2017
Сообщений: 371
05.11.2019, 17:09
Цитата Сообщение от Esso11 Посмотреть сообщение
А я то вводил число 2
Приведите код, чтобы его можно было разобрать. Иначе приходится быть телепатом, чтоб понять, что вы там намутили
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
05.11.2019, 17:14  [ТС]
TolikD, окей, смотрите :
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$summaryQuantity = 0;
$applesBascet = [];
    foreach($new_arr as $key =>$value){     
    if (($summaryQuantity + floatval($value['quantity'])) > $c){        
        break; //already have enough apples
    }
      $summaryQuantity += floatval($value['quantity']);
    $applesBascet[] = $value;
    }
?>
набралось  яблок на  <?=$summaryQuantity?> кг
<?php
print_r($applesBascet)?>
</pre>
Добавлено через 2 минуты
TolikD, дело в том что массив который я беру, он берется по API, понятное дело он всегда меняется и вот если я укажу что мне надо 0,1 кг яблок а первое значение $value['quantity'] будет 5кг то мне выдаст результат: набралось яблок на 0 кг
Array
(
)
0
 Аватар для TolikD
117 / 81 / 36
Регистрация: 30.07.2017
Сообщений: 371
05.11.2019, 17:15
Это тот же самый код, что привел crautcher, откуда у вас результат
Кликните здесь для просмотра всего текста
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
26
27
28
29
30
31
32
33
34
35
Array
(
[0] => Array
(
[trade_id] => 118814903
 
[type] => sell
 
[quantity] => 0.20733556
 
[price] => 63.06000001
 
[amount] => 13.07458041
 
[date] => 1572958980
 
)
 
[1] => Array
(
[trade_id] => 118815173
 
[type] => sell
 
[quantity] => 0.978247
 
[price] => 63.06000001
 
[amount] => 61.68825582
 
[date] => 1572959081
 
)
 
)

с такого входа
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
array(Apple) {
  [0]=> array(6) {
    ["trade_id"]=> string(14) "118759074"
    ["type"]=> string(9) "sell"
    ["quantity"]=>string(14) "2.1057588"
    ["price"]=>string(14) "61.776658"
    ["amount"]=>string(17) "130.08674121"
    ["date"]=>string(15) "1572938931"
  }
  [1]=>array(6) {
    ["trade_id"]=> string(14) "118760045"
    ["type"]=>string(9) "sell"
    ["quantity"]=> string(14) "1.8973346"
    ["price"]=> string(14) "61.782999"
    ["amount"]=>string(17) "117.22302169"
    ["date"]=>string(15) "1572939318"
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
05.11.2019, 17:16  [ТС]
TolikD, значение больше указаного не подтягивает почему то
0
 Аватар для TolikD
117 / 81 / 36
Регистрация: 30.07.2017
Сообщений: 371
05.11.2019, 17:16
Цитата Сообщение от Esso11 Посмотреть сообщение
понятное дело он всегда меняется
А, теперь понятно
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
05.11.2019, 17:17  [ТС]
TolikD,
Цитата Сообщение от Esso11 Посмотреть сообщение
TolikD, дело в том что массив который я беру, он берется по API, понятное дело он всегда меняется и вот если я укажу что мне надо 0,1 кг яблок а первое значение $value['quantity'] будет 5кг то мне выдаст результат: набралось яблок на 0 кг
Array
(
)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.11.2019, 17:17
Помогаю со студенческими работами здесь

Работа с двумерным массивом
дан двумерный массив размером n*m,заполненный случайным образом. 1.Заменить отрицательный элемент каждой строки нулем. 2.Поменять...

Работа с двумерным массивом
Задача. Ввести целочисленный двумерный массив , вывести его. Найти k– количество чётных элементов на главной диагонали. Далее найти...

Работа с двумерным массивом
Доброго времени суток! Необходимо сделать такую программу: 1)Заполнить массив из 10 строк и 10 столбцов случайными двузначными...

Работа с двумерным массивом
1. Дан двумерный массив А, действительных чисел. Определить: 1) Сумму элементов k-го столбца; 2) Произведение элементов С-й строки; ...

Работа с двумерным массивом
Как реализовать двумерный массив с помощью ДСЧ и вручную и выполнить эти действия? 1)Добавить после каждого четного элемента элемент со...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru