在php中访问多个数组数据时遇到问题

在php中访问多个数组数据时遇到问题,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我将数据放在php中的多个数组中,并试图通过键值对逻辑访问它,但没有成功 以下是使用print\r打印阵列时的输出: Array ( [0] => Array ( [33] => Coca Cola Products ) [1] => Array ( [1] => Agricultural products, Food and Beverages ) ) 我正在思考的代码是: foreach

我将数据放在php中的多个数组中,并试图通过键值对逻辑访问它,但没有成功

以下是使用
print\r
打印阵列时的输出:

Array ( 
    [0] => Array ( 
        [33] => Coca Cola Products 
    ) 
    [1] => Array ( 
        [1] => Agricultural products, Food and Beverages 
    ) 
)
我正在思考的代码是:

foreach ($data as $key=>$option)
{
    echo $key;
}
所需输出:

33 coca cola products
1 Agricultural products, Food and Beverages
在我的
for
-填充数据循环中,我正在执行以下操作:

$data[] = array($loop['category_id'] => $loop['category_name']);

现在希望在填充数组时获取类别id和类别名称

data[] = array($loop['category_id'] => $loop['category_name']);
将每个元素创建为一个数组,这就是为什么最终得到的结果

如果你用

$data[$loop['category_id']] = $loop['category_name'];

您将看到数组是在1个深度级别创建的。使用print\r,您将看到不同之处。这意味着当您使用
foreach
进行迭代时,它将使用用于添加数据的键,并在之后给出值。

当您填充数组时

data[] = array($loop['category_id'] => $loop['category_name']);
将每个元素创建为一个数组,这就是为什么最终得到的结果

如果你用

$data[$loop['category_id']] = $loop['category_name'];

您将看到数组是在1个深度级别创建的。使用print\r,您将看到不同之处。这意味着当您使用
foreach
进行迭代时,它将使用您用来添加数据的键,并在之后给出值。

您的$data是一个数组数组,您应该这样做,

foreach ($data as $v)
{
    echo key($v) . ' ' . current($v) . "\n";
}

您的$data是数组的数组,您应该这样做,

foreach ($data as $v)
{
    echo key($v) . ' ' . current($v) . "\n";
}

这可以按如下方式完成

$data = array(array('33'=>"Coca Cola Products"),array("1"=>"Agricultural products, Food and Beverages"));

foreach ($data as $key=>$option)
{
        foreach($option as $k=>$v){
                echo "\n". $k ." ". $v;
        }
}

这可以按如下方式完成

$data = array(array('33'=>"Coca Cola Products"),array("1"=>"Agricultural products, Food and Beverages"));

foreach ($data as $key=>$option)
{
        foreach($option as $k=>$v){
                echo "\n". $k ." ". $v;
        }
}

你想得到什么?@Exprator更新了问题,我猜类别id是唯一的?为什么不这样构建数组:
$data[$loop['category\u id'])=$loop['category\u name']
然后在你的foreach中这样做:
echo$key.'.$option;
你想得到什么?@Exprator更新了问题,请检查我猜类别id是唯一的?为什么不改为这样构建数组:
$data[$loop['category\u id'])=$loop['category\u name']
只需在您的foreach中执行此操作:
echo$key.'.$option;
如果要复制/粘贴我的评论,请确保修复其中的错误。:-)它应该是
$data[$loop['category\u id']
而不是
$data[$loop[$category\u id'])
(最后一个括号)。我对评论的问题是,他们并不总是解释问题是什么,很抱歉复制-这是咖啡因还没有起作用,而且打字很难:-/并不意味着你做错了什么。只是觉得有点可笑。:-)如果你要复制/粘贴我的评论,请确保你修复了其中的错误。:-)应该是be
$data[$loop['category\u id']]
而非
$data[$loop['category\u id'])
(最后一个括号)。我对评论的问题是,他们并不总是解释问题是什么,而且很抱歉抄袭-这是咖啡因还没有起作用,而且打字很难:-/并不意味着你做错了什么。只是觉得有点可笑。:-)