#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 - Пропускать пустые строки
Комментариев нет:
Отправить комментарий