【问题标题】:strtolower() on an array数组上的 strtolower()
【发布时间】:2011-05-25 15:55:26
【问题描述】:

在数组上使用 strtolower() 有没有办法使输出低于小写?

<?=$rdata['batch_id']?>
strtolower($rdata['batch_id'])

【问题讨论】:

  • 问题不清楚。
  • @zerkms:我认为问题是代码会修改$rdata['batch_id'] 的值是否会改变,答案是否定的
  • @RageZ:我也是这么想的,但很明显我宁愿认为我只是误解了他的期望;-)
  • @zerkms:是的,与我们的想法无关......
  • 如果您的字符串中可能包含非英语字符,您也应该使用mb_strtolower($string)PHP Sandbox

标签: php arrays string


【解决方案1】:

正确的函数名称是strtolower()。如果你想在数组的每个元素上应用这个,你可以使用array_map():

$array = array('ONE', 'TWO');
$array = array_map('strtolower', $array);

现在您的数组将包含“一”和“二”。

【讨论】:

  • 在不编辑我的数组内容的情况下顺利完成:if(!in_array(strtolower($filename[0]),array_map('strtolower', $filesArray))){
  • array_map('mb_strtolower', $string) 如果您的字符串中可能包含非英语字符:PHP Sandbox
【解决方案2】:

如果您有一堆带有键值对的数组,并且您只想将键更改为小写,那么这就是您的解决方案:

$lower_array_keys = array_change_key_case($array, CASE_LOWER);

在此处查看:http://php.net/manual/en/function.array-change-key-case.php

【讨论】:

    【解决方案3】:

    你是说strtolower吗?

    <?php echo strtolower($rdata['batch_id']); ?>
    

    http://php.net/manual/en/function.strtolower.php

    【讨论】:

    • 哦,我明白我的问题是我没有结束它。我省略了分号;。谢谢
    【解决方案4】:

    array_map 是首选,但另一种解决方案是:

    foreach($array as &$v) {
      $v = strtolower($v);
    }
    

    请注意,与符号 &amp; 使 $v 可修改。

    【讨论】:

    • 确保始终执行“unset($v);”在一个带有'&'的foreach循环之后。或者确保不再在同一范围内使用 '$v'。否则任何新分配给 $v 的东西都将被放入您的原始数组中。出现问题的示例:sandbox.onlinephpfunctions.com/code/…
    【解决方案5】:

    如果你看一下 strtolower 签名,它没有提到任何参考

    string strtolower ( string $str )
    

    因此您的代码不会修改 $rdata['batch_id'] 的值

    <?=$rdata['batch_id']?>
    strtolower($rdata['batch_id']);
    

    这段代码会

    $rdata['batch_id'] = strtolower($rdata['batch_id']);
    

    【讨论】:

      【解决方案6】:
      array_map('strtolower', $rdata['batch_id']);
      

      【讨论】:

        【解决方案7】:

        您可以将数组转换为包含JSON中数组数据的字符串,将其转换为小写,然后再转换回数组。

        注意:此方法只对索引(未关联)数组有用。

        $lowerarray = json_decode(strtolower(json_encode($mixedarray)));
        

        【讨论】:

        • 此解决方案在技术上可行,但不是正确的做法。如果你将它用于关联的数组,那么这会搞砸。
        • @ARN 没有关联的数组呢?
        • 对于索引数组,此方法可行,但不推荐。使用 array_map()、array_walk() 或 foreach 来完成此操作
        • 如果你用它的局限性更新你的答案,那将是一个很大的改进。
        • @ARN 上面的方法非常适合索引(未关联)数组这种方法内存消耗更少,耗时更少,如果你有数千条记录,那么 foreach 将花费太多时间,通过这种方法你可以提高代码效率,谢谢
        猜你喜欢
        • 2011-06-23
        • 1970-01-01
        • 2011-08-09
        • 2023-01-17
        • 2011-01-25
        • 2016-01-22
        • 2013-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多