Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP для начинающих

Войти
Регистрация
Восстановить пароль
 
 
trest
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 100
#1

Извлечь с удалением из массива подмассив - PHP

08.02.2017, 15:20. Просмотров 368. Ответов 16
Метки нет (Все метки)

приветствую
есть код
PHP
1
2
3
4
5
for ($i = 1; $i <= 3; $i++) {
$trnd[]=$opnnn[$i];
$opnnn=array_diff($opnnn,$trnd); 
}
print_r($trnd);
так все работает, но решил написать функцию

PHP
1
2
3
4
5
6
7
function amount($value_1, $value_2) { 
for ($i = $value_1; $i <= $value_2; $i++) {
$trnd[]=$opnnn[$i];
$opnnn=array_diff($opnnn,$trnd); 
}
return $trnd;
    }
вызываю print_r(amount(1,3)); получаю ошибку array_diff(): Argument #1 is not an array
подскажите почему? и как исправить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2017, 15:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Извлечь с удалением из массива подмассив (PHP):

Вывести подмассив из массива по ключу - PHP
Добрый день, коллеги. помогите с простой задачей, заблудилась в функциях php. Есть двумерный массив: Array ( =&gt; Array ...

Как извлечь данные из массива $_REQUEST? - PHP
Добрый вечер! &lt;form action=&quot;handlef.php&quot; method=&quot;post&quot;&gt; Номер станции &lt;input type=&quot;text&quot; name=&quot;station&quot;&gt;&lt;br&gt; Название станции ...

Подскажите как извлечь данные из JSON массива? - PHP
&lt;html&gt; &lt;head&gt; &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt; &lt;title&gt;Пример веб-страницы&lt;/title&gt; &lt;/head&gt; ...

Максимальный подмассив, выдает ошибку! - PHP
Вроде написал скрипт нахождения максимального подмассива в массиве но не компилится и выдает syntax error на строчке 10. Был бы очень...

проблемка с удалением - PHP
есть статья ссылка на ее удаление такая &lt;a href=delnews_news.php?start=$start&amp;id_news=&quot;.$news.&quot;&gt;удалить&lt;/a&gt; а файл delnews_news.php ...

Подмассив массива - Turbo Pascal
Пусть задан массив целых чисел a1 , a2 , . . . , an . Назовем его подмассивом f(i, j) массив состав- ленный из чисел ai , ai+1 , . . . ,...

16
Пифагор
Модератор
1183 / 986 / 372
Регистрация: 10.01.2015
Сообщений: 3,321
08.02.2017, 15:30 #2
Насколько я вижу код, $opnnn - массив (надеюсь, что массив) из глобальной области видимости, а у функции область видимость локальная. Передайте $opnnn в функцию 3им аргументом.
Например, так (если нигде не ошибся):
PHP
1
2
3
4
5
6
7
8
function amount($value_1, $value_2, $arr){ 
  for ($i = $value_1; $i <= $value_2; $i++) {
    $trnd[] = $arr[$i];
    $arr = array_diff($arr,$trnd);
  }
  return $trnd;
}
print_r(amount(1, 3, $opnnn));
1
Deno95
9 / 9 / 3
Регистрация: 16.12.2013
Сообщений: 108
08.02.2017, 15:37 #3
У вас не инициализирован массив $opnnn.
0
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16702 / 6624 / 433
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
08.02.2017, 16:40 #4
Цитата Сообщение от Пифагор Посмотреть сообщение
Очевидно, массив уже существует.
это было бы очевидно, если бы он использовался в глобальной области видимости. Однако внутри функции никаких global не видно.

Не туда глянул, sorry)
0
Пифагор
Модератор
1183 / 986 / 372
Регистрация: 10.01.2015
Сообщений: 3,321
08.02.2017, 16:43 #5
Цитата Сообщение от Deno95 Посмотреть сообщение
У вас не инициализирован массив $opnnn.
С этим массивом ТС работает без функции. Очевидно, массив уже существует.

Добавлено через 47 секунд
Добавлено через 1 час 0 минут
Цитата Сообщение от KOPOJI Посмотреть сообщение
это было бы очевидно, если бы он использовался в глобальной области видимости.
Так я и говорю, что
Цитата Сообщение от Пифагор Посмотреть сообщение
С этим массивом ТС работает без функции.
Извлечь с удалением из массива подмассив

Добавлено через 31 секунду
Цитата Сообщение от KOPOJI Посмотреть сообщение
Не туда глянул, sorry)
Добро
1
trest
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 100
08.02.2017, 16:59  [ТС] #6
Цитата Сообщение от Пифагор Посмотреть сообщение
Насколько я вижу код, $opnnn - массив (надеюсь, что массив) из глобальной области видимости, а у функции область видимость локальная. Передайте $opnnn в функцию 3им аргументом.
да вы правы $opnnn это массив и он уже существует.
спасибо!

еще вопрос - как видно я беру из массива какое-то количество ячеек и потом удаляю.
так вот вопрос если вдруг массив закончится а я буду вызывать функцию то вывалится ошибка или просто пустое значение будет?
0
Пифагор
Модератор
1183 / 986 / 372
Регистрация: 10.01.2015
Сообщений: 3,321
08.02.2017, 17:12 #7
Цитата Сообщение от trest Посмотреть сообщение
если вдруг массив закончится а я буду вызывать функцию то вывалится ошибка или просто пустое значение будет?
Укажите в условии цикла
PHP
1
for ($i = $value_1; $i <= count($arr); $i++)
и цикл завершится при достижении значения количества элементов массива.
0
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16702 / 6624 / 433
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
08.02.2017, 17:29 #8
Цитата Сообщение от Пифагор Посмотреть сообщение
Укажите в условии цикла
а вот так лучше не писать. Лучше так тогда
PHP
1
for ($i = $value_1, $end = count($arr); $i <= $end; $i++)
и точно <= надо, а не < ?
0
trest
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 100
14.02.2017, 07:01  [ТС] #9
Цитата Сообщение от KOPOJI Посмотреть сообщение
for ($i = $value_1, $end = count($arr); $i <= $end; $i++)
а так разве не будет выводить все ячейки массива? мне надо чтобы выводил заданное мной количество.

проверил код выполнения функции три раза подряд и получил три одинаковые результаты.
подскажите а как сделать так, чтобы каждый вызов функции выдавал разные результаты?
0
Kerry_Jr
Модератор
Эксперт PHP
2209 / 2005 / 702
Регистрация: 14.05.2014
Сообщений: 5,870
Записей в блоге: 1
Завершенные тесты: 5
14.02.2017, 09:42 #10
trest, мне одному кажется, что всё уже до вас написано? array_splice(), либо array_slice() в зависимости от задачи.
0
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16702 / 6624 / 433
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
14.02.2017, 09:51 #11
Цитата Сообщение от trest Посмотреть сообщение
а так разве не будет выводить все ячейки массива?
я просто поправил код, написанный выше. И то, все ли значения будет выводить, зависит от значения $value_1
0
Kerry_Jr
Модератор
Эксперт PHP
2209 / 2005 / 702
Регистрация: 14.05.2014
Сообщений: 5,870
Записей в блоге: 1
Завершенные тесты: 5
14.02.2017, 10:05 #12
trest, объясните, что должна делать функция.
0
trest
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 100
14.02.2017, 10:21  [ТС] #13
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
мне одному кажется, что всё уже до вас написано? array_splice(), либо array_slice() в зависимости от задачи.
к сожалению пока не могу проверить, но спасибо за информацию

Цитата Сообщение от Kerry_Jr Посмотреть сообщение
объясните, что должна делать функция.
у мня есть массив в нем в каждой ячейке предложения.
мне надо функцию чтобы выбиралось мною определенное количество ячеек.
те что были выбраны должны удаляться, чтобы не было повторов

т.е. на странице хочу вызывать функцию несколько раз и в разных местах и получать разные ячейки массива.
надеюсь понятно изложил)
0
PantiL
26 / 26 / 8
Регистрация: 10.03.2016
Сообщений: 73
14.02.2017, 10:34 #14
trest, вам полностью подойдет стандартная функция array_splice array_splice
0
Kerry_Jr
Модератор
Эксперт PHP
2209 / 2005 / 702
Регистрация: 14.05.2014
Сообщений: 5,870
Записей в блоге: 1
Завершенные тесты: 5
14.02.2017, 10:35 #15
Цитата Сообщение от trest Посмотреть сообщение
мне надо функцию чтобы выбиралось мною определенное количество ячеек.
те что были выбраны должны удаляться, чтобы не было повторов
Значит, я правильно понял и вам нужна функция array_splice().
1
14.02.2017, 10:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2017, 10:35
Привет! Вот еще темы с ответами:

Подмассив массива - C++
Ребят, помогите с теорией. Решаю очередную задачку на сайте ********. Что такое &quot;Подмассив массив&quot;. Не мог бы кто-нибудь конкретно на...

Найти наибольший подмассив заданного массива - C++
Здравствуйте. Мне попалась следующая задачка: Имеется массив чисел. В нём могут находиться как отрицательные, так и положительные...

Выбрать из массива А подмассив В с заданной суммой элементов S или сообщить, что подмассива не существует - Turbo Pascal
Нужно помочь очень хорошему человеку решить задачки. Помогите пожалуйста если можете. 1.Выбрать из массива А подмассив В ...

Игра с удалением шариков из массива - C++
Всем привет, еще раз! В общем стоит передо мной следующая задача: Есть N - количество шаров (1 &lt;= N &lt;= 1000) Далее идет массив из...


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

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

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