我在PHP中有这样的字符串:
$data = '1;3;5;7;9';
并循环:
for ($i=0; $i < count($someArray); $i++)
{
// If $i == any number in $data
}
将循环中的$ i与字符串中的数字进行比较的更快方法是什么?我必须检查循环计数器是否为字符串。
答案 0 :(得分:5)
将$data
爆炸到它自己的数组
$data = '1;3;5;7;9';
$numbers = explode(";", $data);
for($i=0; $i < count($someArray); $i++)
{
if(in_array($i, $numbers))
{
// do something
}
}
答案 1 :(得分:2)
我会使用数字作为索引的键:
$data = '1;3;5;7;9';
$index = array_flip(explode(';', $data));
现在,您只需使用isset
或array_key_exists
来检查该号码是否在$data
中:
for ($i=0, $n=count($someArray); $i<$n; ++$i) {
if (array_key_exists($index, $i)) {
// $i is in $data
}
}
你甚至可以反过来,迭代$data
中的数字,看看它们是否在0到count($someArray)
的范围内 - 1:
$data = '1;3;5;7;9';
$n = count($someArray);
foreach (explode(';', $data) as $number) {
if (0 <= $number && $number < $n) {
// $number is in range from 0 to $n-1
}
}
答案 2 :(得分:1)
如果您只是寻找值(循环中没有其他逻辑),您可以更进一步。
$data = '1;3;5;7;9';
$numbers = explode(";", $data);
$result = array_intersect($numbers, range(0, count($someArray)));
print_r($result);