我有一个如下所示的数组:
Array
(
[owner] => user_id
[add_owner] => imagetype
[cache] => cc118e60798c3369f4cc0a544f671e9c
[link] => Array
(
[0] => http://cibooo
[1] => http://teamimage
)
[imagetype] => Array
(
[0] => 8
[1] => 9
)
[email] => Array
(
[0] => cibooo@mai.com
)
)
如您所见,一些键具有多个值。我想要做的是,当数组包含内部具有更多值的键时,将生成以下数组。
Array
(
[images] => Array
(
[owner] => user_id
[add_owner] => imagetype
[link] => http://cibooo
[imagetype] => 8
[email] => cibooo@mai.com
)
[images] => Array
(
[owner] => user_id
[add_owner] => imagetype
[link] => http://teamimage
[imagetype] => 9
[email] => cibooo@mai.com
)
)
现在我做的是以下内容:
foreach ($updates as $update) {
if (isset($data[$update['start_param']]) || $update['start_param'] == 'any') {
/*
* We check if the update input value is empty, if so
* we replace it with an alternative value.
* This alternative value can be the value of the input data
* in the case that it's available, if not it is replaced
* with the value of the input data that corresponds to the
* start_param of each update input.
* If the start_param is 'any' it gets ignored.
*/
$update_value_alternative = isset($data[$update['name']]) ? $data[$update['name']] : isset($data[$update['start_param']]) ? $data[$update['start_param']] : NULL;
$update_value = !$this->check->isEmpty($update['value']) ? $update['value'] : $update_value_alternative;
/*
* owner and add_owner must be the same for the update inputs
* of the same table, so we do not mind if the $vals['owner']
* and $vals['add_owner'] is replaced on each loop for the update inputs
* of the same table.
*/
$vals['owner'] = $update['owner'];
$vals['add_owner'] = $update['add_owner'];
/*
* We add the cache on each loop, will be deleted for
* those tables that do not contain a cache column.
*/
$vals['cache'] = $this->generate('generate->hash');
/*
* The names of all the update inputs and their relative
* values.
* The values are passed through the generate() method
* in order to generate a unique ID or a specific value
* based on what has been inserted in each specific update
* input value. Example: generate->hash
*/
$vals[$update['name']][] = $this->generate($update_value, $update['owner'], $request, $data);
$tables[$update['table']] = $vals;
}
}
在脚本的最底部,您会看到我是如何生成数组的。问题是最终数组如下,而不是在为数组上的每个键找到更多值时创建不同的$updates
数组。$tables[$update['table']]
当$vals[$update['name']][]
每个键包含更多值时,我需要了解如何创建不同的数组。我怎样才能做到这一点?
这是我用我的代码得到的数组。
Array
(
[images] => Array
(
[owner] => user_id
[add_owner] => imagetype
[cache] => 8669e31741b5d7c0f471167dca38cd4e
[link] => Array
(
[0] => http://cibooo
[1] => http://teamimage
)
[imagetype] => Array
(
[0] => 8
[1] => 9
)
[email] => Array
(
[0] => cibooo@mai.com
)
)
)