Это может быть решено с помощью array_slice, если пары k/v были в предсказуемом месте, , к сожалению, они были разбросаны случайным образом по всему массиву, и мне нужно создать свою собственную глупую маленький метод переназначения вещей. К сожалению, мой цикл while здесь не отменяет приседания ... Есть (конечно, есть) лучший метод или способ исправить это поведение?PHP переназначение и удаление разделов из массива
Петля для переназначения и вставки в черный список.
$reports = array(
'inspection_number' =>"{$array['report_key']}",
'customer_number' =>"{$array['customer_number']}",
'customer_division' =>"{$array['customer_division']}",
'report_date' =>"{$array['report_date']}",
'customer' =>"{$array['customer']}",
'location' =>"{$array['location']}",
'region' =>"{$array['region']}",
);
while (list($k, $v) = each($reports)) {
if($array[$k]) { unset($array[$k], $array[$v]); }
}
Массивы, вы можете видеть, что $ array все еще имеет ключи $ reports.
array (
'shipper' => '',
'status' => '',
'po' => '',
'location' => '',
'inspector' => '',
'commodity' => '',
'count' => '',
'size' => '',
'label' => '',
'variety' => '',
'pack_date' => '',
'comments' => '',
'report_key' => '',
'region' => '',
'type' => 'melons',
'report_date' => '1969-12-31',
'customer_number' => '',
'customer' => '',
'customer_division' => '',
'staged' => 'true',
)array (
'`inspection_number`' => '\'\'',
'`customer_number`' => '\'\'',
'`customer_division`' => '\'\'',
'`report_date`' => '\'1969-12-31\'',
'`customer`' => '\'\'',
'`location`' => '\'\'',
'`region`' => '\'\'',
)
EDIT
Так как вы можете видеть, второй массив все еще содержит ключи, которые находятся в первом массиве, это не быть снята с охраны. Даже если я многократный цикл рекурсии как этот
foreach($reports as $reportsKey => $reportsValue) {
foreach($array as $arrayKey => &$arrayValue) {
if($reportsKey == $arrayKey) { unset($arrayKey); }
} }
Я пытаюсь назначить клавиши в $reports
, ключи/значение из $array
, затем незаданы скопированных ключей от $array
. Это МОЖНО быть сделано с array_slice()
, если положение клавиш в $array
было предсказуемым, но, к сожалению, они не являются.
Как ни странно, даже пытается присвоить ключи, которые не существуют в $reports
не работает
$tmp = array();
foreach($array as $ak => $av) {
// if $reports['key_name'] does not exist, assign it to a new array.
if(!$reports[$ak]) { $tmp[$ak] = $av; }
}
не получит то, что вам нужно, и то, что ваша проблема – dynamic
просьбы уточнить – JKirchartz
ли действительно содержит ключ отчеты массив кавычку? Тьфу! –