【问题标题】:How to change array value from string to integer如何将数组值从字符串更改为整数
【发布时间】:2013-09-25 04:46:51
【问题描述】:

我有以下数组,我想将每个 [Entry] 值从字符串更改为整数:

数组 ( [0] => 数组 ( [时间] => 06:08:00 [条目] => 250 ) [1] => 数组 ( [时间] => 08:08:00 [条目] = > 230)

我正在尝试这种方式,这似乎会更改循环内的类型,但更改似乎不会在循环外生效。我是这方面的新手,所以我可能忽略了一些东西,而且很可能是一种更简单的方法来实现这一点。

foreach($data as $inner) {
foreach($inner as $key=>$val) {
    if($key == 'Entry') {
        $newval = intval($val);
        $val = $newval;
        echo(gettype($val));//integer
        }
    }
}

echo(gettype($data[0]['Entry'])); //string

【问题讨论】:

  • 您没有更改数组的字段。试试这个$inner[$key] = intval($val)
  • 引用的 $key 是值的一个实例,而不是数组本身的引用。试试...$data[$key] = (int)$value.
  • 为什么你想这样做?一般来说,您不需要关心 php.ini 中的“类型”。 (某些特殊情况除外)。
  • 我想对数组进行 json_encode 并在 Ajax 调用中传递它,我需要将值设为整数。我认为在服务器端这样做会更容易。
  • @user2232681 但是 javascript 在大多数情况下也并不真正关心类型......

标签: php arrays string types


【解决方案1】:

您需要将其重新转换为实际数组。

foreach($data as $dkey => $inner) {
    foreach($inner as $ikey => $val) {
        if ($ikey == 'Entry') {
             $data[$dkey][$ikey] = intval($val);
        }
    }
}

【讨论】:

  • 您在第 3 行的 ikey 中错过了 i
【解决方案2】:

您没有更改数组中元素的值。

foreach($data as &$inner) {        
        $inner['Entry'] = intval($inner['Entry']);        
}

要修改循环中的数组元素,您必须在$inner 前面加上&。即该值将通过引用分配。

详情见foreach

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多