Php 通过匹配值重新索引数组
我试图操纵数组的排序顺序。我想得到匹配的水果——在本例中是苹果——作为数组的第三个索引Php 通过匹配值重新索引数组,php,sorting,Php,Sorting,我试图操纵数组的排序顺序。我想得到匹配的水果——在本例中是苹果——作为数组的第三个索引 $array_fruit[] = array('fruit' => 'apple', 'color' => 'red'); $array_fruit[] = array('fruit' => 'banana', 'color' => 'yellow'); $array_fruit[] = array('fruit' => 'kiwi', 'color' => 'gr
$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_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.
我是误读了这句话还是你的台词
$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\u inStock['3']=array('fruit'=>'apple','color'=>'red')
被创建$i=1
,array('fruit'=>'banana','color'=>'yellow')
被处理,并且$array\u inStock['1']=array('fruit'=>'banana','color'=>'yellow')
被创建$i=2
,array('fruit'=>'kiwi','color'=>'green')
被处理,并且$array\u inStock['2']=array('fruit'=>'kiwi','color'=>'green')
被创建$i=3
,array('fruit'=>'orange','color'=>'orange')
被处理,并且$array\u inStock['3']=array('fruit'=>'orange','color'=>'orange')
被创建,该将覆盖第一个处理的数组('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结束…我想通过foreach循环会发生以下事件:
$i=0
,array('fruit'=>'apple','color'=>'red')
被处理,并且$array\u inStock['3']=array('fruit'=>'apple','color'=>'red')
被创建$i=1
,array('fruit'=>'banana','color'=>'yellow')
被处理,并且$array\u inStock['1']=array('fruit'=>'banana','color'=>'yellow')
被创建$i=2
,array('fruit'=>'kiwi','color'=>'green')
被处理,并且$array\u inStock['2']=array('fruit'=>'kiwi','color'=>'green')
被创建$i=3
,array('fruit'=>'orange','color'=>'orange')
被处理,并且$array\u inStock['3']=array('fruit'=>'orange','color'=>'orange')
被创建,该将覆盖第一个处理的数组('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_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_stock=array()$i=0;
foreach($k=>v)
{
如果($v['fruit']=='apple')
{
$array_stock[3]=$v;
如果($k>3)
array_push($array_stock,$array_fruit[3]);
继续;
}
如果(数组\密钥\存在($i,$数组\库存))
{
阵列推送($array\u stock,$v);
}
其他的
{
$array_stock[$i]=$v;
$i++;
}
}
ksort(阵列库存);
回声“;
打印(数组库存);
回声“;
试试这个
虽然这是一个漫长的过程,但无论苹果公司目前在哪里,它的工作都是完美的
$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_stock=array()$i=0;
foreach($k=>v)
{
如果($v['fruit']=='apple')
{
$array_stock[3]=$v;
如果($k>3)
array_push($array_stock,$array_fruit[3]);
继续;
}
如果(数组\密钥\存在($i,$数组\库存))
{
阵列推送($array\u stock,$v);
}
其他的
{
$array_stock[$i]=$v;
$i++;
}
}
ksort(阵列库存);
回声“;
打印(数组库存);
回声“;
那么当前代码的结果是什么呢?数组([1]=>数组([fruit]=>香蕉[color]=>黄色)[2]=>数组([fruit]=>猕猴桃[color]=>绿色)[3]=>数组([fruit]=>橙色[color]=>橙色))那么当前代码的结果是什么呢?数组([1]=>数组([fruit]=>香蕉[color]=>黄色)[2]=>数组([fruit]=>猕猴桃[color]=>绿色)[3]=>数组([fruit]=>橙色[color]=>橙色)]否,索引将自动添加为第二个示例不需要分配索引…它将自动放置。阅读以下内容:不,索引将自动添加为第二个示例不需要分配索引…它将自动放置。阅读:当有更多水果时,结果是:数组([0]=>数组([fruit]=>香蕉[color]=>黄色)[1]=>数组([fruit]=>猕猴桃[color]=>绿色)[4]=>数组([fruit]=>柠檬[color]=>黄色)[2]=>数组([水果]=>橙色[颜色]=>橙色)[3]=>数组([水果]=>草莓[颜色]=>红色)),因此结果中不会有苹果这很好,但现在苹果的索引是4而不是3(我在帖子的第一个数组中又添加了一些水果)嗯,好吧,苹果不应该是最后一个,但是有一个索引3?你为什么需要它?匹配的水果将作为第一行的第三个结果在屏幕上回响,所以当我更改匹配词以查找它时,它将始终结束第三个结果,所有其他结果都将下降(第二行)当有更多水果时,结果是:数组([0]=>数组([fruit]=>香蕉[color]=>黄色)[1]=>数组([fruit]=>猕猴桃[color]=>绿色)