Php 我可以用一个循环来做这个吗?
我有一系列的“stristructures”,假设每个看起来都像Php 我可以用一个循环来做这个吗?,php,Php,我有一系列的“stristructures”,假设每个看起来都像 $a['field_1'] = 'value 1'; $b['field_1'] = 'value 2'; $c['field_1'] = 'value 3'; 我将其存储在MySql数据库中 然后,我想和一个数组$b做一个比较,它有相同的键,我想问 for each $a is there a $a['field_1'] where 'value X' == the value of $b['field_1'] ? 我
$a['field_1'] = 'value 1';
$b['field_1'] = 'value 2';
$c['field_1'] = 'value 3';
我将其存储在MySql数据库中
然后,我想和一个数组$b做一个比较,它有相同的键,我想问
for each $a
is there a $a['field_1'] where 'value X' == the value of $b['field_1'] ?
我能避免吗
for ($i = 0; $i < count($a); $i++)
for ($j = 0; $j < count($b); $j++)
if ($a[$i]['field_1'] == $b[$j]['field_1'])
…
for($i=0;$i
我也想反过来做
是否有任何内置函数是我在超负荷使用的,或者我必须使用两个循环
(顺便说一句,我没有使用
foreach
,因为我想通过引用将$a传递到函数中,这给了我foreach
的问题,但没有for循环的问题——出于某种我无法理解的原因)您可以在MySQL中使用类似于以下内容的查询来检查:
mysql_query('SELECT id FROM table WHERE field_1="' . $b['field_1'] . '";');
您可以在MySQL中使用类似于以下内容的查询进行检查:
mysql_query('SELECT id FROM table WHERE field_1="' . $b['field_1'] . '";');
试试这个:
foreach($a as $i => $val) {
if(in_array($val, $b)) {
doSomething($a, $i);
}
}
<?php
$array1 = array("value1", "value2", "value3");
$array2 = array("value1", "value2", "value3");
if (empty(array_diff($array1,$array2))) {
echo "Arrays are equal!";
}
else echo "Arrays are NOT equal!";
?>
如果您也需要B中的位置,请使用:
foreach($a as $i => $val) {
$j = array_search($val, $b)
if($j !== FALSE) { // note operator MUST be !==
doSomething($a, $i, $b, $j);
}
}
我应该警告你,它只是隐藏了第二个循环,但它可能会以这种方式进行优化
此外,我还使用了foreach的foreach
,因为它应该像我这里使用的那样工作良好。如有必要,请随时将其更改回原处。尝试以下操作:
foreach($a as $i => $val) {
if(in_array($val, $b)) {
doSomething($a, $i);
}
}
<?php
$array1 = array("value1", "value2", "value3");
$array2 = array("value1", "value2", "value3");
if (empty(array_diff($array1,$array2))) {
echo "Arrays are equal!";
}
else echo "Arrays are NOT equal!";
?>
如果您也需要B中的位置,请使用:
foreach($a as $i => $val) {
$j = array_search($val, $b)
if($j !== FALSE) { // note operator MUST be !==
doSomething($a, $i, $b, $j);
}
}
我应该警告你,它只是隐藏了第二个循环,但它可能会以这种方式进行优化
此外,我还使用了foreach的foreach
,因为它应该像我这里使用的那样工作良好。如有必要,请随时将其更改回原处。尝试以下操作:
foreach($a as $i => $val) {
if(in_array($val, $b)) {
doSomething($a, $i);
}
}
<?php
$array1 = array("value1", "value2", "value3");
$array2 = array("value1", "value2", "value3");
if (empty(array_diff($array1,$array2))) {
echo "Arrays are equal!";
}
else echo "Arrays are NOT equal!";
?>
试试这个:
foreach($a as $i => $val) {
if(in_array($val, $b)) {
doSomething($a, $i);
}
}
<?php
$array1 = array("value1", "value2", "value3");
$array2 = array("value1", "value2", "value3");
if (empty(array_diff($array1,$array2))) {
echo "Arrays are equal!";
}
else echo "Arrays are NOT equal!";
?>
我不太明白你的问题,你想比较两个数组吗?我不太明白你的问题,你想比较两个数组吗?这需要他对每个元素进行一次查询,这不是很有效。这需要他对每一个元素进行一次查询,这不是很有效。我知道这涉及到第二个循环。我想的更多的是易读的代码。我只是想到了另一种方法。如果您只需要borg数组中的值列表,请尝试使用array_intersect:我知道它涉及第二个循环。我想的更多的是易读的代码。我只是想到了另一种方法。如果您只需要borg数组中的值列表,请尝试使用array_intersect: