PHP array_slice没有返回带整数键的数组

时间:2013-07-10 07:52:08

标签: php arrays slice

说,我在PHP中有以下代码:
included_file.php

DEFINE("MSWFFN",serialize(array(
  "mnu"=>array("n"=>"topmnu.swf","w"=>"980px","h"=>"80px","i"=>"mnu","p"=>"&subp=home")
)));

main_file.php

require_once("included_file.php");
global $MSWFFN;
$MSWFFN=unserialize(MSWFFN);
$swf=array_slice($MSWFFN,0,1,false); //first swf from cfg
var_dump($MSWFFN);
var_dump($swf);

基于所说的in this questionphp website,它应该返回一个带整数键的数组,但它没有。
知道为什么它不会将“ mnu ”键更改为 0 ? 输出:

array (size=1)
  'mnu' => 
    array (size=5)
      'n' => string 'topmnu.swf' (length=10)
      'w' => string '980px' (length=5)
      'h' => string '80px' (length=4)
      'i' => string 'mnu' (length=3)
      'p' => string '&subp=home' (length=10)

array (size=1)
  'mnu' => 
    array (size=5)
      'n' => string 'topmnu.swf' (length=10)
      'w' => string '980px' (length=5)
      'h' => string '80px' (length=4)
      'i' => string 'mnu' (length=3)
      'p' => string '&subp=home' (length=10)

哦,我的Apache版本是 Apache / 2.2.23(Win32)PHP / 5.3.18 (VertrigoServ v2.29)

2 个答案:

答案 0 :(得分:2)

您没有使用数字键。

  

请注意,默认情况下,array_slice()将重新排序并重置数字数组索引。您可以通过将preserve_keys设置为TRUE来更改此行为。

关于这个“惊喜”,甚至还有10-year-old comment

另外,对于它的价值,原始变量的输出和array_slice()的输出完全相同,使得后者有点无用。

答案 1 :(得分:1)

要实现这一目标,您可以使用array_values()

var_dump(array_values($MSWFFN));

输出:

Array (
    [0] => Array
        (
            [n] => topmnu.swf
            [w] => 980px
            [h] => 80px
            [i] => mnu
            [p] => &subp=home
        )

    )