Php 循环前显示数组中的元素

Php 循环前显示数组中的元素,php,arrays,Php,Arrays,我需要先显示数组中的某个对象,然后再显示数组的其余部分 该数组如下所示: Array ( [0] => stdClass Object ( [template_id] => 91 [template_name] => Alphabet [template_thumbnail] => blank-template-thumbnail.jpg [templa

我需要先显示
数组中的某个
对象
,然后再显示
数组的其余部分

该数组如下所示:

Array
(
    [0] => stdClass Object
        (
            [template_id] => 91
            [template_name] => Alphabet
            [template_thumbnail] => blank-template-thumbnail.jpg
            [template_create_date] => 1456821665
            [template_customer_id] => 0
            [template_is_responsive] => no
            [template_type] => builder
            [template_category] => simple
            [sort] => 2
        )

    [1] => stdClass Object
        (
            [template_id] => 92
            [template_name] => Blank Template
            [template_thumbnail] => blank-template-thumbnail.jpg
            [template_create_date] => 1456821670
            [template_customer_id] => 0
            [template_is_responsive] => no
            [template_type] => builder
            [template_category] => simple
            [sort] => 2
        )

    [2] => stdClass Object
        (
            [template_id] => 31
            [template_name] => Holiday Specials
            [template_thumbnail] => accommodation-1-20110926.jpg
            [template_create_date] => 1456821660
            [template_customer_id] => 0
            [template_is_responsive] => no
            [template_type] => builder
            [template_category] => Accommodation
            [sort] => 3
        )
)
我需要先显示
空白模板
,然后按字母顺序(现在的顺序)显示其余模板

有没有比在数组中循环两次更优雅的解决方案?数组的大小可以是1(空白模板)到无数对象。

$str=“”;
$str="";
for($i=0;$i<=count($arr);$i++){
   if($arr[$i]['template_name'] == "Blank Template"){
         echo $arr[$i]['template_name'];
   }else{
         $str .= $arr[$i]['template_name']. "<br>";
   }
}

echo $str;
对于($i=0;$i请尝试以下方法:

$firstItem = null;
$outArray = [];
foreach($yourArray as $item){
    if($item->template_name == 'Blank Template'){
        $firstItem = $item;
    }else{
        $outArray[$item->template_name] = $item;
    }
}
ksort($outArray,SORT_STRING);
array_unshift($outArray,$firstItem);
只需一个循环。请注意,如果模板名称具有唯一性,那么这种方法就可以工作


希望能有所帮助。

这对你有用,试试看

<?php 
$dataArray = array(0=>array('template_id'=>91,'template_name'=>'Alphabet'),
                   1=>array('template_id'=>92,'template_name'=>'Blank Template'),
                   2=>array('template_id'=>31,'template_name'=>'Holiday Specials')
                 );

$newArray = array();

foreach($dataArray as $key => $val)
{
    if(in_array('Blank Template',$val))///find the key for black template
    {
        unset($dataArray[$key]); ///unset black temp from original array
        $newArray[] = $val;///push black temp into new array at 0 index
        foreach($dataArray as $k => $v)
        {
            $newArray[] = $v; ///push the renaming values into new array 
        }
    }
}
echo "<pre>"; print_r($newArray);

?>

< > >强> > /P>在数组中使用TEMPPLAGEID作为索引不是更好吗?然后你可以给空白模板(默认情况下)一个ID并用索引调用它。它回显它。Loop一直构建字符串直到结束,并回显它当前的输出来自何处以及它在那里的顺序如何?@Albert你需要更多的帮助吗?没有一个答案足够好吗?@Andreas尝试了一些,决定用你的答案
Array
(
    [0] => Array
        (
            [template_id] => 92
            [template_name] => Blank Template
        )

    [1] => Array
        (
            [template_id] => 91
            [template_name] => Alphabet
        )

    [2] => Array
        (
            [template_id] => 31
            [template_name] => Holiday Specials
        )

)