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]   

> Без описания
Gray314
Отправлено: 27 Апреля, 2011 - 14:06:23
Post Id


Новичок


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


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




Ребят помогите динамически удали элементы с массива:
вот например исходный массив:
PHP:
скопировать код в буфер обмена
  1. (
  2.     [0] => второе 34
  3.     [1] => первое а43в, а5, ва3, ы22
  4.     [2] => первое р1, бвв, ые5
  5.     [3] => второе 37
  6.     [4] => первое щщщ, б4б, юа5
  7.     [5] => второе 74
  8.     [6] => 24, 234, 234, 66, 7 Конец слагаемого
  9.     [7] => 6: р1 = аав4- sin(в4а)-ы3ц+у3у-й5ц-ыв
  10.     [8] => ж3 = р5+п3
  11.     [9] => 765: ф = уыу5*cos(пв6)/234
  12.     [10] => х1 = -ла2- sin(а009)
  13.     [11] => 7: ф = уыу5*cos(пв6)/234
  14. )

есть массив с позициями элементов для удаления:
PHP:
скопировать код в буфер обмена
  1. (
  2.     [0] => 1
  3.     [1] => 2
  4.     [2] => 4
  5. )


вот код который я использую для удаления:
PHP:
скопировать код в буфер обмена
  1. for ($k=0;$k<count($array_pos);$k++)
  2.     {
  3.         $pos = $array_pos[$k];      
  4.         array_splice($array_input,$pos,1);
  5.     }

получается при каждой итерации исходный массив уменьшается на 1 элемент, и последующая итерация удаляет не тот элемент, можно это как нибудь реализовать, чтобы все верно отрабатывало?
 
 Top
Viper
Отправлено: 27 Апреля, 2011 - 14:29:43
Post Id



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


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


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




$arr1 это в чем искать
$arr что ищем

PHP:
скопировать код в буфер обмена
  1. foreach ($arr1 as $key=>$value) {
  2.         foreach ($arr2 as $val) {
  3.                 if ($val == $key) unset($arr1[$key]);
  4.         }
  5. }


Вроде так.

Чет седня мозги совсем не варят...


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
garvey
Отправлено: 27 Апреля, 2011 - 14:37:15
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


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




Viper, можно проще.
PHP:
скопировать код в буфер обмена
  1. foreach (array_values($itemsForDelete) as $deleteIndex) {
  2.     unset ($fullArray[$deleteIndex]);
  3. }
 
 Top
Gray314
Отправлено: 27 Апреля, 2011 - 14:43:32
Post Id


Новичок


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


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




Спасибо, я пробывал Unset(), но он при удалении выдаст следующее:
Array
PHP:
скопировать код в буфер обмена
  1. (
  2.     [1] => второе 34
  3.     [4] => второе 37
  4.     [6] => второе 74
  5.     [7] => 24, 234, 234, 66, 7 Конец слагаемого
  6.     [8] => 6: р1 = аав4- sin(в4а)-ы3ц+у3у-й5ц-ыв
  7.     [9] => ж3 = р5+п3
  8.     [10] => 765: ф = уыу5*cos(пв6)/234
  9.     [11] => х1 = -ла2- sin(а009)
  10.     [12] => 7: ф = уыу5*cos(пв6)/234
  11. )

а хотелось бы:
PHP:
скопировать код в буфер обмена
  1. (
  2.     [0] => второе 34
  3.     [1] => второе 37
  4.     [2] => второе 74
  5.     [3] => 24, 234, 234, 66, 7 Конец слагаемого
  6.     [4] => 6: р1 = аав4- sin(в4а)-ы3ц+у3у-й5ц-ыв
  7.     [5] => ж3 = р5+п3
  8.     [6] => 765: ф = уыу5*cos(пв6)/234
  9.     [7] => х1 = -ла2- sin(а009)
  10.     [8] => 7: ф = уыу5*cos(пв6)/234
  11. )

может есть какая функция в php, которая "упорядочит" индексы?)
 
 Top
Саныч Модератор
Отправлено: 27 Апреля, 2011 - 15:25:49
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Gray314 пишет:
может есть какая функция в php, которая "упорядочит" индексы?)

помойму такой функции нет, но ведь можно самому написать)
PHP:
скопировать код в буфер обмена
  1. function resort($arr)
  2. {
  3.    $new = array();
  4.    foreach($arr as $v) $new[] = $v;
  5.    return $new;
  6. }
  7. $array = resort($array);


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
garvey
Отправлено: 27 Апреля, 2011 - 15:52:31
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


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




Саныч, есть такая функция:
 
 Top
Gray314
Отправлено: 27 Апреля, 2011 - 15:57:18
Post Id


Новичок


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


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




Саныч пишет:
Gray314 пишет:
может есть какая функция в php, которая "упорядочит" индексы?)

помойму такой функции нет, но ведь можно самому написать)
PHP:
скопировать код в буфер обмена
  1. function resort($arr)
  2. {
  3.    $new = array();
  4.    foreach($arr as $v) $new[] = $v;
  5.    return $new;
  6. }
  7. $array = resort($array);


Спасибо!
 
 Top
garvey
Отправлено: 27 Апреля, 2011 - 16:16:03
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


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




Gray314, а мое решение, которое намного меньше, вас не устраивает? Зачем изобретать велосипед?

(Отредактировано автором: 27 Апреля, 2011 - 16:16:47)

 
 Top
Саныч Модератор
Отправлено: 27 Апреля, 2011 - 17:35:10
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




garvey пишет:
Саныч, есть такая функция
не знал... Запомню...


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Gray314
Отправлено: 27 Апреля, 2011 - 18:40:23
Post Id


Новичок


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


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




garvey пишет:
Gray314, а мое решение, которое намного меньше, вас не устраивает? Зачем изобретать велосипед?

Устраивает спасибо, чесн говоря не заметил сразу твой ответ, подправил свой код, Спасибо)
теперь мучиюсь с регуляркой)
 
 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