【问题标题】:Array key with the dash php 5带有破折号 php 5 的数组键
【发布时间】:2016-03-05 19:08:57
【问题描述】:

在我的 php 5 代码中,我需要访问名称中有破折号的数组键(case-ins)。有什么办法吗?

我的代码如下所示:

 $count = 0;
 foreach($par as $key){
      foreach($key as $case-ins)
           $count = $count+1;
      ....   
 }

基本上我需要获取数组大小。我知道我可能可以使用 count 功能,但现在我正在处理的最大问题是破折号。我在网上找到了类似 ${case-ins} 的东西。但它没有用。我无法更改数组键的名称,因为它实际上是我使用 getopt 获得的命令行参数。

你能帮我解决这个问题吗?或者有没有其他方法可以计算同一个参数被使用了多少次?

谢谢大家的回答:)

【问题讨论】:

  • $case-ins 在这种情况下是您的选择。那只是变量名,而不是键本身。事实上,它甚至不是关键,而是价值。 (foreach($arr as $key => $value))
  • 另外:$a = array('foo-bar' => 'b'); echo $a['foo-bar']; 将输出b。我认为你在这里混淆了自己。 $case-ins 是变量名。当然,我可能理解错了
  • @Anant 我不能使用 count($par) 因为我需要获取这个数组内的数组大小......例如我有这个数组 $par 填充了数组 $i,或者$case-ins... 等等。如果你说的很明显,我很抱歉,但我是 php 新手,不太明白。
  • @Hello_World 我的意思是你不能有一个名为$case-ins的变量,它会抛出syntax error, unexpected '-'$a-b 至少意味着您希望从 a 中减去 b。当您键入foreach 时,您定义了变量名称,键和值都无关紧要。见the error。见it working
  • 您说:如果我使用 => $value,则 $value 的类型必须是字符串或整数。如果您指的是 foreach,那么 no$value 可以是任何东西。甚至是一个对象。看看这个多级数组示例:https://3v4l.org/3pSbA

标签: php arrays foreach key getopt


【解决方案1】:
$par = array(
            array(
                '0'=> 'dark-blue',
                '1'=> 'yellow',
                '2'=> 'high-color'
                ),
            );

$count = 0;
foreach ($par as $key ) {   
    foreach ($key as ${'case-ins'} ) {
        if (preg_match('#-#', ${'case-ins'} )==true) {
            $count = $count+1;
        }       
    }
}
echo $count; // count is 2 ..

更多信息:在一些严格的 PHP 系统中,您最好使用 #(.+)?-(.+)?# 而不是 #-# 而不是${'case-ins'},你可以使用像$case_ins这样的普通变量,而不是PHP中的破折号。

【讨论】:

    猜你喜欢
    • 2018-07-12
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多