PHP in_数组不会检查所有情况
在PHP中,我正在从数组中删除值。在数组中使用PHP in_数组不会检查所有情况,php,arrays,Php,Arrays,在PHP中,我正在从数组中删除值。在数组中使用检查,但出于某种原因,它不希望检查排除数组的整个长度。运行此代码会从数组中删除道奇条目,但不会从丰田中删除,这是为什么 <?php $inventory = array( '0' => Array ( 'car_name' => 'Dodge', 'set_name' => 'A',
检查,但出于某种原因,它不希望检查排除数组的整个长度。运行此代码会从数组中删除道奇条目,但不会从丰田中删除,这是为什么
<?php
$inventory = array(
'0' => Array
(
'car_name' => 'Dodge',
'set_name' => 'A',
'edition' => 'B41',
'location' => 'Houston'
),
'1' => Array
(
'car_name' => 'Dodge',
'set_name' => 'A',
'edition' => 'B41',
'location' => 'Houston'
),
'2' => Array
(
'car_name' => 'Dodge',
'set_name' => 'A',
'edition' => 'B41',
'location' => 'Houston'
),
'3' => Array
(
'car_name' => 'Dodge',
'set_name' => 'A',
'edition' => 'VarA31',
'location' => 'Houston'
),
'4' => Array
(
'car_name' => 'Toyota',
'set_name' => 'A',
'edition' => 'VarA31',
'location' => 'Houston'
),
'5' => Array
(
'car_name' => 'Toyota',
'set_name' => 'A',
'edition' => 'VarA31',
'location' => 'Houston'
),
'6' => Array
(
'car_name' => 'Toyota',
'set_name' => 'A',
'edition' => 'VarA31',
'location' => 'Houston'
),
'7' => Array
(
'car_name' => 'Toyota',
'set_name' => 'A',
'edition' => 'VarA31',
'location' => 'Houston'
),
'8' => Array
(
'car_name' => 'Toyota',
'set_name' => 'A',
'edition' => 'VarA31',
'location' => 'Houston'
),
'9' => Array
(
'car_name' => 'Toyota',
'set_name' => 'A',
'edition' => 'VarA31',
'location' => 'Houston'
),
'10' => Array
(
'car_name' => 'Toyota',
'set_name' => 'A',
'edition' => 'VarA31',
'location' => 'Houston'
),
'11' => Array
(
'car_name' => 'Toyota',
'set_name' => 'A',
'edition' => 'VarA31',
'location' => 'Houston'
),
);
$exclude = array('Dodge','Toyota');
for($k=0; $k<sizeof($inventory); $k++)
{
if(in_array(trim($inventory[$k]['car_name']), $exclude))
{ unset($inventory[$k]);}
}
$inventory = array_values($inventory);
echo '<pre>';
print_r($inventory);
echo '</pre>';
?>
您的问题是,从枚举数组中取消设置元素将调整数组的大小,但是使用sizeof()
进行测试以查看是否应该退出循环,因此每次取消设置的迭代都会减少剩下的测试值的数量
$exclude = array('Dodge','Toyota');
$filtered = array();
for($k=0; $k<sizeof($inventory); $k++){
if(in_array(trim($inventory[$k]['car_name']), $exclude)){
// dont do this because it is changing the count of elements in the array unset($inventory[$k]);
} else {
$filtered[] = $inventory[$k]; // push the desired values into a new array
}
}
echo '<pre>';
print_r($filtered); // this should have the values that don't have 'Dodge' or 'Toyota'
echo '</pre>';
$exclude=array('Dodge','Toyota');
$size=sizeof($inventory);
对于($k=0;$size;$k++){
if(在数组中(trim($inventory[$k]['car\u name']),不包括$exclude)){
未结算(存货[$k]);
}
}
$inventory=数组_值($inventory);
回声';
$exclude = array('Dodge','Toyota');
$size = sizeof($inventory);
for($k=0; $size; $k++) {
if(in_array(trim($inventory[$k]['car_name']), $exclude)) {
unset($inventory[$k]);
}
}
$inventory = array_values($inventory);
echo '<pre>';
print_r($inventory);
echo '</pre>';
打印(库存);
回声';
$exclude = array('Dodge','Toyota');
$size = sizeof($inventory);
for($k=0; $size; $k++) {
if(in_array(trim($inventory[$k]['car_name']), $exclude)) {
unset($inventory[$k]);
}
}
$inventory = array_values($inventory);
echo '<pre>';
print_r($inventory);
echo '</pre>';
您的问题是,从枚举数组中取消设置元素将调整数组的大小,但是使用sizeof()
进行测试以查看是否应该退出循环,因此每次取消设置的迭代都会减少剩下的测试值的数量
$exclude = array('Dodge','Toyota');
$filtered = array();
for($k=0; $k<sizeof($inventory); $k++){
if(in_array(trim($inventory[$k]['car_name']), $exclude)){
// dont do this because it is changing the count of elements in the array unset($inventory[$k]);
} else {
$filtered[] = $inventory[$k]; // push the desired values into a new array
}
}
echo '<pre>';
print_r($filtered); // this should have the values that don't have 'Dodge' or 'Toyota'
echo '</pre>';
$exclude=array('Dodge','Toyota');
$size=sizeof($inventory);
对于($k=0;$size;$k++){
if(在数组中(trim($inventory[$k]['car\u name']),不包括$exclude)){
未结算(存货[$k]);
}
}
$inventory=数组_值($inventory);
回声';
$exclude = array('Dodge','Toyota');
$size = sizeof($inventory);
for($k=0; $size; $k++) {
if(in_array(trim($inventory[$k]['car_name']), $exclude)) {
unset($inventory[$k]);
}
}
$inventory = array_values($inventory);
echo '<pre>';
print_r($inventory);
echo '</pre>';
打印(库存);
回声';
$exclude = array('Dodge','Toyota');
$size = sizeof($inventory);
for($k=0; $size; $k++) {
if(in_array(trim($inventory[$k]['car_name']), $exclude)) {
unset($inventory[$k]);
}
}
$inventory = array_values($inventory);
echo '<pre>';
print_r($inventory);
echo '</pre>';
您的问题是,从枚举数组中取消设置元素将调整数组的大小,但是使用sizeof()
进行测试以查看是否应该退出循环,因此每次取消设置的迭代都会减少剩下的测试值的数量
$exclude = array('Dodge','Toyota');
$filtered = array();
for($k=0; $k<sizeof($inventory); $k++){
if(in_array(trim($inventory[$k]['car_name']), $exclude)){
// dont do this because it is changing the count of elements in the array unset($inventory[$k]);
} else {
$filtered[] = $inventory[$k]; // push the desired values into a new array
}
}
echo '<pre>';
print_r($filtered); // this should have the values that don't have 'Dodge' or 'Toyota'
echo '</pre>';
$exclude=array('Dodge','Toyota');
$size=sizeof($inventory);
对于($k=0;$size;$k++){
if(在数组中(trim($inventory[$k]['car\u name']),不包括$exclude)){
未结算(存货[$k]);
}
}
$inventory=数组_值($inventory);
回声';
$exclude = array('Dodge','Toyota');
$size = sizeof($inventory);
for($k=0; $size; $k++) {
if(in_array(trim($inventory[$k]['car_name']), $exclude)) {
unset($inventory[$k]);
}
}
$inventory = array_values($inventory);
echo '<pre>';
print_r($inventory);
echo '</pre>';
打印(库存);
回声';
$exclude = array('Dodge','Toyota');
$size = sizeof($inventory);
for($k=0; $size; $k++) {
if(in_array(trim($inventory[$k]['car_name']), $exclude)) {
unset($inventory[$k]);
}
}
$inventory = array_values($inventory);
echo '<pre>';
print_r($inventory);
echo '</pre>';
您的问题是,从枚举数组中取消设置元素将调整数组的大小,但是使用sizeof()
进行测试以查看是否应该退出循环,因此每次取消设置的迭代都会减少剩下的测试值的数量
$exclude = array('Dodge','Toyota');
$filtered = array();
for($k=0; $k<sizeof($inventory); $k++){
if(in_array(trim($inventory[$k]['car_name']), $exclude)){
// dont do this because it is changing the count of elements in the array unset($inventory[$k]);
} else {
$filtered[] = $inventory[$k]; // push the desired values into a new array
}
}
echo '<pre>';
print_r($filtered); // this should have the values that don't have 'Dodge' or 'Toyota'
echo '</pre>';
$exclude=array('Dodge','Toyota');
$size=sizeof($inventory);
对于($k=0;$size;$k++){
if(在数组中(trim($inventory[$k]['car\u name']),不包括$exclude)){
未结算(存货[$k]);
}
}
$inventory=数组_值($inventory);
回声';
$exclude = array('Dodge','Toyota');
$size = sizeof($inventory);
for($k=0; $size; $k++) {
if(in_array(trim($inventory[$k]['car_name']), $exclude)) {
unset($inventory[$k]);
}
}
$inventory = array_values($inventory);
echo '<pre>';
print_r($inventory);
echo '</pre>';
打印(库存);
回声';
$exclude = array('Dodge','Toyota');
$size = sizeof($inventory);
for($k=0; $size; $k++) {
if(in_array(trim($inventory[$k]['car_name']), $exclude)) {
unset($inventory[$k]);
}
}
$inventory = array_values($inventory);
echo '<pre>';
print_r($inventory);
echo '</pre>';
您正在从数组中删除index:value对,同时对其进行迭代。因此,在取消设置一个值后,索引位置不匹配,甚至不存在
尝试将确实需要的值复制到新的空数组中,如下所示:
$exclude=array('Dodge','Toyota');
$filtered=array();
对于($k=0;$k您正在从数组中删除index:value对,同时对其进行迭代。因此,在取消设置值后,索引位置不匹配,甚至不存在
尝试将确实需要的值复制到新的空数组中,如下所示:
$exclude=array('Dodge','Toyota');
$filtered=array();
对于($k=0;$k您正在从数组中删除index:value对,同时对其进行迭代。因此,在取消设置值后,索引位置不匹配,甚至不存在
尝试将确实需要的值复制到新的空数组中,如下所示:
$exclude=array('Dodge','Toyota');
$filtered=array();
对于($k=0;$k您正在从数组中删除index:value对,同时对其进行迭代。因此,在取消设置值后,索引位置不匹配,甚至不存在
尝试将确实需要的值复制到新的空数组中,如下所示:
$exclude=array('Dodge','Toyota');
$filtered=array();
对于($k=0;$k使用foreach
代替($k=0;$k使用foreach
代替用于($k=0;$k使用foreach
代替用于($k=0;$k使用foreach
代替用于($k=0;$kinu数组()多维数组不起作用。此处$exclude数组中可能使用了@user2058037-in_数组的副本,这将起作用。这是一个很好的例子,说明为什么增量for
循环在支持某种foreach
构造的语言中不经常使用。如果您通过foreach执行此操作($inventory as$k=>$v)
你会发现它更容易管理。这样想-如果你必须“做一件事N次”,使用增量for
循环。如果你必须“对集合中的每个元素做一件事”,请改为选择一个foreach
。in_array()多维数组不起作用。此处$exclude数组中可能使用了@user2058037-in_数组的副本,这将起作用。这是一个很好的例子,说明为什么增量for
循环在支持某种foreach
构造的语言中不经常使用。如果您通过foreach执行此操作($inventory as$k=>$v)
你会发现它更容易管理。这样想-如果你必须“做一件事N次”,使用增量for
循环。如果你必须“对集合中的每个元素做一件事”,请改为选择一个foreach
。in_array()多维数组不起作用。此处$exclude数组中可能使用了@user2058037-in_数组的副本,这将起作用。这是一个很好的例子,说明为什么增量for
循环在支持某种foreach
构造的语言中不经常使用。如果您通过foreach执行此操作($inventory as$k=>$v)
你会发现它更容易管理。这样想-如果你必须“做一件事N次”,使用增量for
循环。如果你必须“对集合中的每个元素做一件事”,请改为选择一个foreach
。in_array()多维数组不起作用。此处的$exclude数组可能使用了@user2058037-in_数组的重复项,它将在此处起作用。这是一个尝试