dongzipu7517 2015-10-23 08:49
浏览 190

PHP将一些数组键转换为字符串,一些作为整数,我需要一种类型

I think it is when an array keys starts with 0 (at least in my case) it casts the key as string, here is my array:

array (size=2)


2015 => 
    array (size=9)
      '04' => string 'Array(2)' (length=8)
      '05' => string 'Array(2)' (length=8)
      '06' => string 'Array(2)' (length=8)
      '07' => string 'Array(2)' (length=8)
      '08' => string 'Array(2)' (length=8)
      '09' => string 'Array(2)' (length=8)
      10 => string 'Array(2)' (length=8)
      11 => string 'Array(2)' (length=8)
      12 => string 'Array(2)' (length=8)
  2016 => 
    array (size=4)
      '01' => string 'Array(2)' (length=8)
      '02' => string 'Array(2)' (length=8)
      '03' => string 'Array(2)' (length=8)
      '04' => string 'Array(2)' (length=8)

When I output the array it messes with the order, they need to be in sequential order but the integer keys are output first then the string keys second.

How can I force them to be either integers or strings and not a mixture of both?

EDIT::

If I use the following suggested below (int) like so:

$periods[$diaryActivityScore->getDate()->format('Y')][(int)$diaryActivityScore->getDate()->format('m')]['data']

I get the following output from the array:

array (size=2)
2015 => 
    array (size=11)
      '04' => string 'Array(2)' (length=8)
      '05' => string 'Array(2)' (length=8)
      '06' => string 'Array(2)' (length=8)
      '07' => string 'Array(2)' (length=8)
      '08' => string 'Array(2)' (length=8)
      '09' => string 'Array(2)' (length=8)
      10 => string 'Array(2)' (length=8)
      11 => string 'Array(2)' (length=8)
      12 => string 'Array(2)' (length=8)
      5 => string 'Array(1)' (length=8)
      8 => string 'Array(1)' (length=8)
  2016 => 
    array (size=4)
      '01' => string 'Array(2)' (length=8)
      '02' => string 'Array(2)' (length=8)
      '03' => string 'Array(2)' (length=8)
      '04' => string 'Array(2)' (length=8)
  • 写回答

1条回答 默认 最新

  • douxian1939 2015-10-23 09:16
    关注

    Before adding element to array, check if key is numeric is is_numeric($key) function. If it return false, then, covert key to integer using typecasting, (int)$key.

    Now, the array will have numeric keys only and can be ordered.

    评论

报告相同问题?

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c