【问题标题】:PHP array_slice not returning array with integer keysPHP array_slice 不返回带有整数键的数组
【发布时间】:2013-07-08 01:26:56
【问题描述】:

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

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

ma​​in_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)

【问题讨论】:

    标签: php arrays slice


    【解决方案1】:

    您没有使用数字键。

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

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

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

    【讨论】:

    • 哦,我猜我误解了它将键转换为数字,而它只返回第 N 个元素。非常感谢!
    • 它将修改和恢复数字键,但它会重新匹配并保留字符串键。请注意,数字键包括定义为字符串的键,例如array("12" => "Something...")。玩弄它。
    【解决方案2】:

    为此,您可以使用array_values()

    var_dump(array_values($MSWFFN));
    

    输出:

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

    【讨论】:

    • 正是我想要完成的!谢谢!
    猜你喜欢
    • 2013-07-17
    • 2021-05-13
    • 2019-09-21
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多