我正在尝试操纵数组的排序顺序。我想得到匹配的水果 - 在这种情况下是苹果 - 作为阵列上的第三个索引。
$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);
我不明白这里出了什么问题。有人有想法吗?重要的问候。
答案 0 :(得分:1)
试试这个
虽然这是一个漫长的方式,但无论目前苹果在哪里都可以完美无缺。
$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>";
答案 1 :(得分:0)
我误读了这个或做了你的行
$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.
答案 2 :(得分:0)
我想通过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('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 ...
答案 3 :(得分:0)
试试这个:::
$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);