#php #массивы
На этот вопрос уже даны ответы здесь:
PHP: Как сделать поиск на соответствие значению в массиве?
(2 ответа)
Закрыт 2 года назад.
Есть большой двух уровненный массив, первый ключ число, второй строка, кирилица,
и есть файл со списком ключей которые нужно удалить.
Как можно удалить нужные ключи из этого массива?
как пробовал делать:
$file3=file("ignore.txt");
print_r($sparam2[0]);
print_r($sparam2[2]);
for ($i = 0; $i ";
unset($sparam2[$i][$keys4]);
}
}
прикол в том, что даже строка echo $sparam2[$i][$keys4].""; ничего не выводит, echo
$keys4 выводит нужный ключ.
вот результат вывода элементов (пример массива)
print_r($sparam2[0]);
print_r($sparam2[2]);
Array
(
[Название] => Название
[Код Русского Света] => Код Русского Света
[Артикул] => Артикул
[Бренд] => Бренд
[Цена] => Цена
[Длина] => Длина
[Источник света] => Источник света
[Исполнение] => Исполнение
[Аккумуляторный] => Аккумуляторный
[Материал] => Материал
[Тип батареи] => Тип батареи
[Водонепроницаемый] => Водонепроницаемый
[Цвет корпуса] => Цвет корпуса
[Наличие на складе] => Наличие на складе
[Ширина] => Ширина
[Высота] => Высота
[Тип светильника] => Тип светильника
[Способ монтажа] => Способ монтажа
[Тип цоколя] => Тип цоколя
[Мощность лампы] => Мощность лампы
[Класс защиты от поражения электрическим током] => Класс защиты от поражения
электрическим током
[Материал корпуса] => Материал корпуса
)
Array
(
[Название] => Фонарь S-LD043-B Silver Uniel UL-00000191
[Код Русского Света] => 413391
[Артикул] => UL-00000191
[Бренд] => Uniel
[Цена] => 116.82
[Длина] => 88 мм
[Источник света] => Светодиод
[Исполнение] => Карманный фонарь цилиндрической формы
[Аккумуляторный] => Нет
[Материал] => Алюминий
[Тип батареи] => Мизинчиковый
[Водонепроницаемый] => Да
[Цвет корпуса] => Серебристый
[Наличие на складе] => Штука
[Ширина] =>
[Высота] =>
[Тип светильника] =>
[Способ монтажа] =>
[Тип цоколя] =>
[Мощность лампы] =>
[Класс защиты от поражения электрическим током] =>
[Материал корпуса] =>
)
Для примера в файле игнора два ключа
Материал
Тип батареи
Их нужно исключить из этого массива.
Ответы
Ответ 1
Немного не правильно. Как вы можете удалять елемент из массива и динамически проверять его размер? Нужный код должен быть примерно такой (если конечно данные из файла валидные, а то вы file используете без параметров...): $file3=file("ignore.txt"); print_r($sparam2[0]); print_r($sparam2[2]); // индекс 2 ??? это не ошибка? $nof_params = count($sparam2); $file3_count = count($file3); $array_to_delete = array(); //создаем массив елементов для удаления for ($i = 0; $i <$nof_params; $i++) { for ($j = 0; $j <$file3_count; $j++) { $keys4=$file3[$j]; echo $sparam2[$i][$keys4]."
"; array_push($array_to_delete, array($i, trim($keys4))); } } for($i = 0; $i < count($array_to_delete); $i++) { $ii = $array_to_delete[$i][0]; $keys4 = $array_to_delete[$i][1]; unset($sparam2[$ii][$keys4]); }Ответ 2
Неоднократно уже поднимались тут вопросы связанные с функцией file(). Если ее используют без настройки вторым параметром, получают не то, что хотели. $file3 = file("ignore.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); где FILE_IGNORE_NEW_LINES - Не добавлять новую строку к концу каждого элемента массива FILE_SKIP_EMPTY_LINES - Пропускать пустые строки
Комментариев нет:
Отправить комментарий