以下是来自paypal.com的所有外部JS文件的示例数组:
Array
(
[src] => Array
(
[1] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/lib/min/global.js
[2] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/tns/mid.js
[8] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/opinionlab/oo_engine.js
[11] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/iconix.js
[12] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/pageBlockingUnsafeBrowsers.js
[13] => https://www.paypalobjects.com/js/tns/min/bid.js
[15] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/pp_naturalsearch.js
[17] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/site_catalyst/pp_jscode_080706.js
)
[size] => Array
(
[1] => 0.273
[2] => 0.266
[8] => 0.279
[11] => 0.265
[12] => 0.285
[13] => 0.248
[15] => 0.275
[17] => 0.289
)
)
是否有PHP的内置函数,或者可以将此数组重新排序为此的自定义(也没有大的性能影响):
Array
(
[src] => Array
(
[1] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/lib/min/global.js
[2] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/tns/mid.js
[3] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/opinionlab/oo_engine.js
[4] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/iconix.js
[5] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/pageBlockingUnsafeBrowsers.js
[6] => https://www.paypalobjects.com/js/tns/min/bid.js
[7] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/pp_naturalsearch.js
[8] => https://www.paypalobjects.com/WEBSCR-590-20090814-1/js/site_catalyst/pp_jscode_080706.js
)
[size] => Array
(
[1] => 0.273
[2] => 0.266
[3] => 0.279
[4] => 0.265
[5] => 0.285
[6] => 0.248
[7] => 0.275
[8] => 0.289
)
)
答案 0 :(得分:10)
这个功能应该可以工作,这很简单。
function reindex_array($src) {
$dest = array();
foreach ($array as $key => $value) {
if (is_array($value)) {
foreach ($value as $dest_val) {
$dest[$key][] = $dest_val;
}
}
}
return $dest;
}
中建议的array_values()
function reindex_array($src) {
$dest = array();
foreach ($array as $key => $value) {
if (is_array($value)) {
$dest[$key] = array_values($value);
}
}
return $dest;
}
这将使数组索引从0开始。如果您想要基于1的索引,请使用:
function reindex_array($src) {
$dest = array();
foreach ($array as $key => $value) {
if (is_array($value)) {
$count = 1;
foreach ($value as $dest_val) {
$dest[$key][$count] = $dest_val;
$count++;
}
}
}
return $dest;
}
答案 1 :(得分:8)
编辑:我最初没有注意到数组嵌套,因此以下内容是不够的。由于Imran已经纳入了我的建议,我不会再进一步编辑。
检查array_values()功能,它几乎完全符合您的需要。
你想要的输出的唯一区别是它从零开始重新索引 - 如果你真的需要索引从一开始,你可以先array_shift()
一个虚拟条目,然后array_unshift()
它
答案 2 :(得分:2)
如果你真的希望每个子数组从索引1开始,请使用:
foreach($inputarray as &$a)
$a = array_combine(range(1,count($a)),$a);
在0索引处开始每个子数组索引使用此...
foreach($inputarray as &$a)
$a = array_values($a);
PHP参考:
array_combine
range
array_values
答案 3 :(得分:2)
您可以简单地使用array_values
功能,它非常易于使用,而且只是一种方法/功能。
// The array
$array = array(0 => "value", 3 => "value", 8 => "value");
// Reorder the array
$array = array_values($array);
希望这有帮助!
答案 4 :(得分:0)
我最好的一击,暂时(快速且未经考验的尝试)
$i = 1;
foreach($src as $key=>$item) {
if ($i != $key) {
$src[$i] = $src[$key];
$size[$i] = $size[$key];
unset($src[$key]];
unset($size[$key]];
}
$i++;
}
但为什么你需要求助阵列呢?使用foreach ($array as $key=>$value)循环使用它们在此上下文中可以正常工作。