Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过匹配值重新索引数组_Php_Sorting - Fatal编程技术网

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]=>绿色)