如何在php中不使用foreach返回多索引的对象数据

如何在php中不使用foreach返回多索引的对象数据,php,cakephp-2.0,Php,Cakephp 2.0,我通过存储过程获取特定表的数据,演示代码是 Array ( [0] => Array ( [object_types] => Array ( [ID] => 11 [Code] => Item001 [Name] => Item

我通过存储过程获取特定表的数据,演示代码是

Array
(
    [0] => Array
        (
            [object_types] => Array
                (
                    [ID] => 11
                    [Code] => Item001
                    [Name] => Item
                    [Description] => Items
                    [DisplayName] => Items
                    [ObjectTypeIdentifier] => 1
                    [CheckPermissions] => 1
                    [DefaultLedgerType_002] => 
                    [DefaultNarration] => 
                    [CopyTaxesFromParent] => 1
                    [CreatedBy] => 1
                    [ModifiedBy] => 1
                    [CreatedDate] => 2014-04-02 00:00:00
                    [ModifiedDate] => 2014-04-08 00:00:00
                    [RevisionNumber] => 1
                    [IsAdd] => 1
                    [IsEdit] => 
                    [IsDelete] => 1
                )

        )

    [1] => Array
        (
            [object_types] => Array
                (
                    [ID] => 12
                    [Code] => Uom001
                    [Name] => Uom
                    [Description] => Uom
                    [DisplayName] => Uom
                    [ObjectTypeIdentifier] => 1
                    [CheckPermissions] => 1
                    [DefaultLedgerType_002] => 1
                    [DefaultNarration] => 1
                    [CopyTaxesFromParent] => 1
                    [CreatedBy] => 1
                    [ModifiedBy] => 1
                    [CreatedDate] => 2014-04-02 00:00:00
                    [ModifiedDate] => 2014-04-02 00:00:00
                    [RevisionNumber] => 1
                    [IsAdd] => 1
                    [IsEdit] => 1
                    [IsDelete] => 1
                )

        )

    [2] => Array
        (
            [object_types] => Array
                (
                    [ID] => 13
                    [Code] => Role
                    [Name] => Role
                    [Description] => Role
                    [DisplayName] => Role
                    [ObjectTypeIdentifier] => 1
                    [CheckPermissions] => 1
                    [DefaultLedgerType_002] => 1
                    [DefaultNarration] => 
                    [CopyTaxesFromParent] => 1
                    [CreatedBy] => 1
                    [ModifiedBy] => 1
                    [CreatedDate] => 2014-04-03 00:00:00
                    [ModifiedDate] => 2014-04-03 00:00:00
                    [RevisionNumber] => 1
                    [IsAdd] => 1
                    [IsEdit] => 
                    [IsDelete] => 1
                )

        )

    [3] => Array
        (
            [object_types] => Array
                (
                    [ID] => 14
                    [Code] => User
                    [Name] => User
                    [Description] => Use
                    [DisplayName] => User
                    [ObjectTypeIdentifier] => 1
                    [CheckPermissions] => 1
                    [DefaultLedgerType_002] => 1
                    [DefaultNarration] => 71
                    [CopyTaxesFromParent] => 1
                    [CreatedBy] => 1
                    [ModifiedBy] => 1
                    [CreatedDate] => 2014-04-03 00:00:00
                    [ModifiedDate] => 2014-04-09 00:00:00
                    [RevisionNumber] => 1
                    [IsAdd] => 1
                    [IsEdit] => 
                    [IsDelete] => 1
                )

        )

    [4] => Array
        (
            [object_types] => Array
                (
                    [ID] => 15
                    [Code] => AccountMaster
                    [Name] => AccountMaster
                    [Description] => AccountMaster
                    [DisplayName] => Account
                    [ObjectTypeIdentifier] => 1
                    [CheckPermissions] => 1
                    [DefaultLedgerType_002] => 1
                    [DefaultNarration] => 1
                    [CopyTaxesFromParent] => 1
                    [CreatedBy] => 1
                    [ModifiedBy] => 1
                    [CreatedDate] => 2014-04-05 00:00:00
                    [ModifiedDate] => 2014-04-05 00:00:00
                    [RevisionNumber] => 1
                    [IsAdd] => 1
                    [IsEdit] => 
                    [IsDelete] => 
                )

        )

    [5] => Array
        (
            [object_types] => Array
                (
                    [ID] => 16
                    [Code] => Contact
                    [Name] => Contact
                    [Description] => Contact
                    [DisplayName] => Contact
                    [ObjectTypeIdentifier] => 1
                    [CheckPermissions] => 1
                    [DefaultLedgerType_002] => 103
                    [DefaultNarration] => 71
                    [CopyTaxesFromParent] => 1
                    [CreatedBy] => 1
                    [ModifiedBy] => 1
                    [CreatedDate] => 2014-04-07 00:00:00
                    [ModifiedDate] => 2014-04-08 00:00:00
                    [RevisionNumber] => 1
                    [IsAdd] => 1
                    [IsEdit] => 1
                    [IsDelete] => 1
                )

        )

)
我想在不使用foreach循环语句的情况下重新运行所有数据

$data = array();
            foreach($modelData as $row){
                $data[] = $row[$model->name];
            }
            return $data;

我不想使用这个foreach循环。所以请给我建议合适的解决方案

那么JSON呢?可以从数组中获取字符串

你可以使用这个函数

做一些类似于:

$data = array_map(function($model){
return $model['object_type']['Name'];
},$modelData);
代码没有经过测试,但应该是这样的

根据您对其他解决方案的var_dump响应,尝试:

$data = array_map(function($model){
return $model['object_type']['Name']['text'];
},$modelData);

我不确定这是否是您想要的,但万一是这样,我尝试做同样的事情,得到一个没有别名的数组,比如:$array['first\u name'],而不是$array['User']['first\u name'],以便以JSON格式打印它,但不幸的是,没有办法在本机上这样做,所以我坚持使用foreach

如果不是foreach,然后尝试使用循环,因为要迭代数组,必须使用一些循环,最快的循环如下

试一试


先生,我想在没有for或任何lopp的情况下通过任何php函数直接生成$data..因为我是通过foreach stmt生成的。没有获取我的对象数组。。请使用我的数组变量名。@Abhishek我更新了我的答案,现在发生了什么,是否有任何错误?数组[0]=>array[value]=>11[text]=>Item[1]=>array[value]=>12[text]=>Uom[2]=>array[value]=>13[text]=>Role我想将此数组值添加到直接下拉列表中,因为stmtn无法获得正确的数组,因为$model=??已编辑,请立即检查警告2:数组\u map希望参数1是有效的回调,数组必须有两个成员[APP\Plugin\Admin\Controller\objecttypescocontroller.php,第107行]已更新,这是我的错误,我将参数按错误的顺序放置,没有获得正确的对象数组描述您的要求。数组[0]=>Array[value]=>11[text]=>Item[1]=>Array[value]=>12[text]=>Uom[2]=>Array[value]=>13[text]=>Role先生,我想将此数据绑定到下拉控件中,因为我不想使用foreach循环或任何类型的循环stmt直接使用任何php函数数组[0]=>Array[value]=>11[text]=>Item[1]=>Array[value]=>12[text]=>Uom我想将此对象数组绑定到下拉控件,以便删除foreach stmt。使用任何类型的php函数,如array\u map等。如果您是从Model::find使用findlist,$options获取数据。否则您将需要一个php\u函数,对不起,伙计:
$data = array();
$size = sizeof($modelData);

for($i=0; $i<=$size; $i++)
{
    $data[] = $modelData[$i][$model->name];
}
return $data;
  $final_array = array_map(
  function ($a) { 

    return  $a['object_types']['Name'];
  }, 
    $modelData
  );

 print_r($final_array);