![](/img/trans.png)
[英]Finding an array item with a certain value, removing it and re-indexing array
[英]Re-indexing an array by matching value
我正在尝试操纵数组的排序顺序。 我想获得匹配的水果-在这种情况下为苹果-作为数组上的第三个索引。
$array_fruit[] = array('fruit' => 'apple', 'color' => 'red');
$array_fruit[] = array('fruit' => 'banana', 'color' => 'yellow');
$array_fruit[] = array('fruit' => 'kiwi', 'color' => 'green');
$array_fruit[] = array('fruit' => 'orange', 'color' => 'orange');
$array_fruit[] = array('fruit' => 'strawberry', 'color' => 'red');
$array_fruit[] = array('fruit' => 'lemon', 'color' => 'yellow');
$i = 0;
$array_inStock = array();
foreach($array_fruit as $fruit)
{
if($fruit['fruit'] == 'apple')
{
$array_inStock['3'] = array('fruit' => $fruit['fruit'], 'color' => $fruit['color']);
}
else
{
$array_inStock[$i] = array('fruit' => $fruit['fruit'], 'color' => $fruit['color']);
}
$i++;
}
asort($array_inStock);
print_r($array_inStock);
我不明白这里出了什么问题。 有人有主意吗? 大问候。
尝试这个
尽管这是一个漫长的过程,但是无论苹果当前在哪里,它都可以完美运行
$array_stock =array();$i=0;
foreach($array_fruit as $k=>$v)
{
if($v['fruit'] =='apple')
{
$array_stock[3]=$v;
if($k>3)
array_push($array_stock,$array_fruit[3]);
continue;
}
if(array_key_exists($i,$array_stock))
{
array_push($array_stock,$v);
}
else
{
$array_stock[$i]=$v;
$i++;
}
}
ksort($array_stock);
echo "<pre>";
print_r($array_stock);
echo "</pre>";
我是看错了还是做你的台词
$array_fruit[] = array('fruit' => 'apple', 'color' => 'red');
$array_fruit[] = array('fruit' => 'banana', 'color' => 'yellow');
etc.
每次重写数组的内容? 相反,你想要
$array_fruit[0] = array('fruit' => 'apple', 'color' => 'red');
$array_fruit[1] = array('fruit' => 'banana', 'color' => 'yellow');
etc.
我想通过foreach循环会发生以下事件:
$i = 0
,处理array('fruit' => 'apple', 'color' => 'red')
并处理$array_inStock['3'] = array('fruit' => 'apple', 'color' => 'red')
已创建 $i = 1
,处理array('fruit' => 'banana', 'color' => 'yellow')
,然后$array_inStock['1'] = array('fruit' => 'banana', 'color' => 'yellow')
已创建 $i = 2
,处理array('fruit' => 'kiwi', 'color' => 'green')
,然后$array_inStock['2'] = array('fruit' => 'kiwi', 'color' => 'green')
已创建 $i = 3
!!! ,处理array('fruit' => 'orange', 'color' => 'orange')
并处理$array_inStock['3'] = array('fruit' => 'orange', 'color' => 'orange')
创建$array_inStock['3'] = array('fruit' => 'orange', 'color' => 'orange')
来覆盖第一个处理后的array('fruit' => 'apple', 'color' => 'red')
... 您应该怎么做:
foreach($array_fruit as $fruit) {
if($fruit['fruit'] == 'apple') {
$array_inStock[3] = $fruit;
} else if($i != 3) {
$array_inStock[$i] = $fruit;
$i++;
}
}
苹果最终将成为索引3 ...
尝试这个 :::
$array_fruit = array();
$array_fruit[] = array('fruit' => 'apple', 'color' => 'red');
$array_fruit[] = array('fruit' => 'banana', 'color' => 'yellow');
$array_fruit[] = array('fruit' => 'kiwi', 'color' => 'green');
$array_fruit[] = array('fruit' => 'orange', 'color' => 'orange');
print_r($array_fruit);
$i = 0;
$array_inStock = array();
foreach($array_fruit as $fruit)
{
if($fruit['fruit'] == 'apple')
{
$array_inStock['3'] = $fruit;
}
else
{
$array_inStock[$i] = $fruit;
$i++;
}
}
asort($array_inStock);
print_r($array_inStock);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.