PHP中的简单数组操作

时间:2012-10-18 09:58:03

标签: php arrays

假设我有以下数组:

Array
(
[0] => Array
    (
        [0] => a
        [1] => 1
    )

[1] => Array
    (
        [0] => b
        [1] => 8
    )

[2] => Array
    (
        [0] => c
        [1] => 16
    )

[3] => Array
    (
        [0] => d
        [1] => 21
    )
....

)

内部数组中的数字是从范围(0,100)中随机生成的,它们不会重复。

我想创建一个循环,它将从0迭代到100并检查循环迭代是否等于上面数组的内部数。例外结果是包含100个元素的数组:

Array
(
  [0] => const
  [1] => a
  [2] => const
  [3] => const
  [4] => const
  [5] => const
  [6] => const
  [7] => const
  [8] => b
  [9] => const
  [10] => const
  .
  .
  [16] => c
  [17] => const
  .
  .
  [21] => d
  [22] => const
  [23] => const
  .
  .
)

我需要的是:

for ($i=0; $i < 100; $i++) {
  if($i === $name[$i][1]) {
    $new_array[] = $name[$i][0];
  } else {
    $new_array[] = 'const';
  }
}

但是我无法让它发挥作用,因此我需要一些帮助。

我不是英语母语人士,所以希望你能理解我想要达到的目标。谢谢你的帮助。

5 个答案:

答案 0 :(得分:1)

你需要一个嵌套循环,如:

for ($i=0; $i < 100; $i++):
   $found = false;
   foreach($name as $array):
      if($array[1] === $i):
         $found = true;
         $new_array[] = $array[0];
       endif;
   endforeach;
  if(!$found):
    $new_array[] = 'const';
  endif;
endfor;

答案 1 :(得分:1)

它不起作用的原因是因为每次$i递增时你都试图在$name[$i]中进行匹配,而不是检查$name中的所有数组,我能想到的最简单的解决方案(并执行最少的迭代次数)将是这样的:

$new_array = array();

foreach ($name as $n) {
  $new_array[$n[1]] = $n[0];
}

for ($i=0; $i<100; $i++) {
  if (!isset($new_array[$i])) {
    $new_array[$i] = 'const';
  }
}
ksort($new_array);

首先,循环浏览$name数组,并使用$new_array =&gt;设置keyvalue[1] => 'a', [8] => 'b',然后在for循环中检查key ($i)是否已经设置,如果没有,请设置value 'const'。最后,按$new_array键进行排序。

此示例中的迭代次数为count($name) + 100,而嵌套循环则为100 * count($name)

答案 2 :(得分:0)

使用

for ($i=0; $i < 100; $i++) {
 if($i === $name[$i][1]) {
   $new_array[$i] = $name[$i][0];
  }
  else{
    $new_array[$i] = 'const';
  }
}

答案 3 :(得分:0)

for ($i = 0; $i < count($name); ++$i) {
    if ($name[$i][1] === $i) {
        $name[$i] = $name[$i][0];
    } else {
        $name[$i] = 'const';
    }
}

答案 4 :(得分:-1)

为什么使用Identical运算符代替Equal

for ($i=0; $i < 100; $i++) {
  if($i == $name[$i][1]) {
    $new_array[] = $name[$i][0];
  } else {
    $new_array[] = 'const';
  }
}