繁体   English   中英

通过匹配值重新索引数组

[英]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循环会发生以下事件:

  1. $i = 0 ,处理array('fruit' => 'apple', 'color' => 'red')并处理$array_inStock['3'] = array('fruit' => 'apple', 'color' => 'red')已创建
  2. $i = 1 ,处理array('fruit' => 'banana', 'color' => 'yellow') ,然后$array_inStock['1'] = array('fruit' => 'banana', 'color' => 'yellow')已创建
  3. $i = 2 ,处理array('fruit' => 'kiwi', 'color' => 'green') ,然后$array_inStock['2'] = array('fruit' => 'kiwi', 'color' => 'green')已创建
  4. $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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM