Php 从数组中提取值

Php 从数组中提取值,php,arrays,foreach,Php,Arrays,Foreach,我试图从一个填充了新闻项及其参数的数组中获取特定值 我的数组有25个项目,来自6个不同的类别,我只需要获得类别名称,但不需要25次。如果我不完全清楚,就说出来 这是打印($This->primary): 我的循环是: for each ($getids->categories as $key=>$mycategory) { echo ' <h2> CAT NAME SHOULD GO HERE</h2> '; for each ($this-&

我试图从一个填充了新闻项及其参数的数组中获取特定值

我的数组有25个项目,来自6个不同的类别,我只需要获得类别名称,但不需要25次。如果我不完全清楚,就说出来

这是打印($This->primary):

我的循环是:

for each ($getids->categories as $key=>$mycategory)
{
    echo ' <h2> CAT NAME SHOULD GO HERE</h2> ';
    for each ($this->primary as $key=>$item){
        if ($mycategory == $item->categoryid){
            echo $item->title;
        }
    }
}

使用当前设置,除了调用categoryName 25次之外,您没有其他选择。如果你想避免这样做,我会考虑重构你的代码,以便$->主元没有填充所有的东西。假设从模型中获取这些值,可以将模型函数更改为“按类别名称限制”

foreach($categoryNames as $categoryName) {
    $this->primaryArray[$categoryName] = Foo.getByCategoryName($categoryName);
}

foreach($this->primaryArray as $categoryName => $primary) {
    echo '<h2>' . $categoryName . '</h2>';
    foreach($primary as $key=>$item){
        echo $item->title;
    }
}
foreach($categoryName作为$categoryName){
$this->primaryArray[$categoryName]=Foo.getByCategoryName($categoryName);
}
foreach($this->primaryArray作为$categoryName=>$primary){
回显“.$categoryName.”;
foreach($primary as$key=>$item){
echo$item->title;
}
}
编辑

要按类别排序(尽管您仍将调用25次):

$primaryArray=array();
//按类别对数组排序
foreach($this->primary作为$value){
$primaryArray[$value->categoryName]=$value;
}
foreach($primaryArray作为$categoryName=>$primary){
回显“.$categoryName.”;
foreach($primary as$key=>$item){
echo$item->title;
}
}

使用当前设置,除了调用categoryName 25次之外,您别无选择。如果你想避免这样做,我会考虑重构你的代码,以便$->主元没有填充所有的东西。假设从模型中获取这些值,可以将模型函数更改为“按类别名称限制”

foreach($categoryNames as $categoryName) {
    $this->primaryArray[$categoryName] = Foo.getByCategoryName($categoryName);
}

foreach($this->primaryArray as $categoryName => $primary) {
    echo '<h2>' . $categoryName . '</h2>';
    foreach($primary as $key=>$item){
        echo $item->title;
    }
}
foreach($categoryName作为$categoryName){
$this->primaryArray[$categoryName]=Foo.getByCategoryName($categoryName);
}
foreach($this->primaryArray作为$categoryName=>$primary){
回显“.$categoryName.”;
foreach($primary as$key=>$item){
echo$item->title;
}
}
编辑

要按类别排序(尽管您仍将调用25次):

$primaryArray=array();
//按类别对数组排序
foreach($this->primary作为$value){
$primaryArray[$value->categoryName]=$value;
}
foreach($primaryArray作为$categoryName=>$primary){
回显“.$categoryName.”;
foreach($primary as$key=>$item){
echo$item->title;
}
}

假设您希望保留$getids->categories返回的类别顺序,可以尝试以下操作:

//Group items by category.
$itemsByCategory = array()
foreach($this->primary as $item) {
    if ( !isset($itemsByCategory[$item->categoryid] ) {
        $itemsByCategory[$item->categoryid] = array();
    }
    $itemsByCategory[$item->categoryid][] = $item;
}

//Print items in each category.
foreach($getids->categories as $mycategory):
    if ( isset($itemsByCategory[$mycategory]) ) {
        $categoryName = $itemsByCategory[$mycategory][0]->categoryname;
        echo '<h2>', $categoryName ,'</h2>';
        foreach($$temsByCategory[$mycategory] as $key=>$item){
           echo $item->title;
        }
    }

endforeach;
//按类别对项目进行分组。
$itemsByCategory=array()
foreach($this->primary as$item){
如果(!isset($itemsByCategory[$item->categoryid]){
$itemsByCategory[$item->categoryid]=array();
}
$itemsByCategory[$item->categoryid][]=$item;
}
//打印每个类别中的项目。
foreach($getid->categories as$mycategory):
if(isset($itemsByCategory[$mycategory])){
$categoryName=$itemsByCategory[$mycategory][0]->categoryName;
echo“”,$categoryName“”;
foreach($$temsByCategory[$mycategory]作为$key=>$item){
echo$item->title;
}
}
endforeach;

假设您希望保留$getids->categories返回的类别顺序,可以尝试以下操作:

//Group items by category.
$itemsByCategory = array()
foreach($this->primary as $item) {
    if ( !isset($itemsByCategory[$item->categoryid] ) {
        $itemsByCategory[$item->categoryid] = array();
    }
    $itemsByCategory[$item->categoryid][] = $item;
}

//Print items in each category.
foreach($getids->categories as $mycategory):
    if ( isset($itemsByCategory[$mycategory]) ) {
        $categoryName = $itemsByCategory[$mycategory][0]->categoryname;
        echo '<h2>', $categoryName ,'</h2>';
        foreach($$temsByCategory[$mycategory] as $key=>$item){
           echo $item->title;
        }
    }

endforeach;
//按类别对项目进行分组。
$itemsByCategory=array()
foreach($this->primary as$item){
如果(!isset($itemsByCategory[$item->categoryid]){
$itemsByCategory[$item->categoryid]=array();
}
$itemsByCategory[$item->categoryid][]=$item;
}
//打印每个类别中的项目。
foreach($getid->categories as$mycategory):
if(isset($itemsByCategory[$mycategory])){
$categoryName=$itemsByCategory[$mycategory][0]->categoryName;
echo“”,$categoryName“”;
foreach($$temsByCategory[$mycategory]作为$key=>$item){
echo$item->title;
}
}
endforeach;

看看这是否适合你

foreach($this->primary as $key=>$item)
{
    $headingPrinted = false;
    foreach($getids->categories as $key=>$catID) {
        if($catID == $item->categoryid){
            if (!$headingPrinted) {
                echo '<h2>'.$item->categoryname.'</h2>';
                $headingPrinted = true;
            }
            echo $item->title;
        }
    }
}
foreach($this->primary as$key=>$item)
{
$headingPrinted=false;
foreach($getid->categories as$key=>$catID){
如果($catID==$item->categoryid){
如果(!$headingPrinted){
回显“.$item->categoryname.”;
$headingPrinted=true;
}
echo$item->title;
}
}
}

看看这是否适合你

foreach($this->primary as $key=>$item)
{
    $headingPrinted = false;
    foreach($getids->categories as $key=>$catID) {
        if($catID == $item->categoryid){
            if (!$headingPrinted) {
                echo '<h2>'.$item->categoryname.'</h2>';
                $headingPrinted = true;
            }
            echo $item->title;
        }
    }
}
foreach($this->primary as$key=>$item)
{
$headingPrinted=false;
foreach($getid->categories as$key=>$catID){
如果($catID==$item->categoryid){
如果(!$headingPrinted){
回显“.$item->categoryname.”;
$headingPrinted=true;
}
echo$item->title;
}
}
}

在你的foreach循环中,
$getids->categories
是什么?你能用打印的
$getids->categories
来更新你的问题吗?@humayun,更新了,它只是给了我category id'sOk,但在
$getids->categories
中还有什么期望的吗?Categoryname?不,那是菜单项给了我要获取的类别来自的项目,除了它们的id之外,没有给我其他任何东西。在你的foreach循环中,
$getids->categories
是什么?你能用
$getids->categories
的打印来更新你的问题吗?@humayun,更新了,它只是给我类别id'sOk,但在
$getids->categories
?Categoryname中还有什么要求吗?n这是一个菜单项,它给了我获取项目的类别,并没有给我任何其他东西,但它们的id's我不能编辑任何核心文件,必须使用我拥有的,这就是我在上面发布的内容,我不介意,调用它25次,但我需要它在每个项目组中只显示一次,所以如果我有6个cat,应该只有6个cat标题,not 25在这种情况下…你可以自己手动安排。但是,当然,这违背了目的,因为你仍然称它为XD 25次,我该怎么做?这就是问题的目的,编辑后添加manu