Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление значений из массива 
:(
    Опции темы
Gold Dragon
  Дата 12.8.2005, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



использовал поиск, не нашёл smile

Есть массив
Код

Array (
       [0] => Array (
              [tag] => ROOT
              [type] => open
              [level] => 1
              [value] => )
       [1] => Array (
              [tag] => KABAK
              [type] => open
              [level] => 2
              [value] => )
       [2] => Array (
              [tag] => NAME
              [type] => complete
              [level] => 3
              [value] => Roga i Kopyta )
       [3] => Array (
              [tag] => ADRESS
              [type] => open
              [level] => 3
              [value] => )
       [4] => Array (
              [tag] => SITY
              [type] => complete
              [level] => 4
              [value] => Нижний Новгород )
       [5] => Array (
              [tag] => AREA
              [type] => complete
              [level] => 4
              [value] => Priokskii )
            ........


Мне нужно удалить из массива записи в которых [type] => complete , т.е. удатить [2],[4],[5]




--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Ринат
Дата 12.8.2005, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 31.3.2005

Репутация: нет
Всего: нет



попробуй пройтись по массиву, затем проверка на наличие пары ключ-значение (array_key_exists) и потом unset($array[$i])
соответственно 2 цикла будет (1 вложенный)

Это сообщение отредактировал(а) Ринат - 12.8.2005, 12:35
PM MAIL   Вверх
Наставник
Дата 12.8.2005, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 4.11.2004

Репутация: 2
Всего: 15



Red Dragon
Код

for($c=0;isset($array[$c]);$c++)  
  if($array[$c]['type']=='complete')
    unset($array[$c]);


суть в том чтобы потом прочитать данный массив нужно использовать конструкцию наподобие
while(list()=each($array[])), т.к. в индексах массива появились пропуски.
Удачи.

Это сообщение отредактировал(а) Наставник - 12.8.2005, 12:41


--------------------
Богатство языка определяет широту мысли
Персональный сайт >>
PM MAIL WWW   Вверх
Gold Dragon
Дата 12.8.2005, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



я сейчас делаю так
Код

$a = count($vals);
$y = 0;
$q = array();
for ($i=0; $i<$a; $i++){
     $b = $vals[$i]['type'];
     if ($b != "complete"){
        $q[$y] = $vals[$i];
        $y++;
     }
}
$vals = $q;

но это что-то наворочено, может другое решение есть
Добавлено @ 12:40
Наставник
что-то не понял твой код... поясни


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Ринат
Дата 12.8.2005, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 31.3.2005

Репутация: нет
Всего: нет



тебе нужен новый массив без этих значений, или этот же
PM MAIL   Вверх
Наставник
Дата 12.8.2005, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 4.11.2004

Репутация: 2
Всего: 15



в смысле..
$array -> твой двухмерный массив
пробегаемся по циклу, смотрим существует ли массив с номером индекса $array[0], $array[1], $array[2] ну и т.д.. если да, то выполняем операцию сравнения $array[$c]['type']=='complete', если сранение успешно, то удаляем из массива $array[$c], в итоге останется в том же самом массиве, только то что надо было. т.е
$array[0],
$array[1],
$array[3].

ДОБАВЛЕНО
и вот видешь теперь появились разрывы в массиве, и конструкция for не прочитает весь массив, надо использовать другую конструкцию.

Гы.. Удачи.



Это сообщение отредактировал(а) Наставник - 12.8.2005, 12:47


--------------------
Богатство языка определяет широту мысли
Персональный сайт >>
PM MAIL WWW   Вверх
Gold Dragon
Дата 12.8.2005, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата
и вот видешь теперь появились разрывы в массиве, и конструкция for не прочитает весь массив, надо использовать другую конструкцию.
smile smile

Ринат
вообще-то хотелось бы тотже самый массив без этих значений


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Наставник
Дата 12.8.2005, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 4.11.2004

Репутация: 2
Всего: 15



Цитата(Red @ 12.8.2005, 12:59)
Цитата (Наставник @ 12.8.2005, 12:46)
и вот видешь теперь появились разрывы в массиве, и конструкция for не прочитает весь массив, надо использовать другую конструкцию.


Не понял Вас Red Dragon, что смешного?

вот конструкция, которая прочитает весь массив
Код

foreach ($array as $key => $value) {
    foreach ($array[$key] as $key2 => $value2) {
        // что угодно делаем.
    }
}


или такая конструкция.
Код

while($arr=eaсh($array)) {
    while($arr2=eaсh($arr['key'])) {
    
    }
}


Признаюсь. не проверял, но долно работать..
Удачи.

Это сообщение отредактировал(а) Наставник - 12.8.2005, 13:18


--------------------
Богатство языка определяет широту мысли
Персональный сайт >>
PM MAIL WWW   Вверх
Gold Dragon
Дата 12.8.2005, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата
Не понял Вас Red Dragon, что смешного?
да не, всё нормально, просто смешно получилось, типа всё сделалось, только теперь читаться не будет.... smile Но смысл понял..





--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 12.8.2005, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Ой, а че так сложно?
Код

<?php

 for( $i = 0 ; $i < count( $mas ) ; $i++ )
  {
   if( $mas[$i]['type'] == 'complete' )
    {  unset( $mas[$i] );  }
  }

?>

PM ICQ   Вверх
Наставник
Дата 12.8.2005, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 4.11.2004

Репутация: 2
Всего: 15



Mal Hack - Вы знаете, что привели такую же копию кода и как и мною опубликованный чуть выше :--)))), я дамаю он не сложнее вашего.. гы.. Простите за оффтоп, не смог удержаться
smile


--------------------
Богатство языка определяет широту мысли
Персональный сайт >>
PM MAIL WWW   Вверх
Mal Hack
Дата 12.8.2005, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Наставник сорри, не заметил 0-)
PM ICQ   Вверх
Gold Dragon
Дата 12.8.2005, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Mal Hack
что-то у меня на пошло smile даже лишнее появилось


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0760 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.