php中多维数组,php中的多维数组

我刚接触过PHP(从1周开始学习)。我正在学习阵列。在执行此操作时,我发现了一个API,它以多维数组的形式给出结果。我无法回显数组的值。

样本响应

Array

(

[query] => Array

(

[count] => 1

[created] => 2010-07-16T08:35:38Z

[lang] => en-US

[results] => Array

(

[item] => Array

(

[rel] => rel:Person

[resource] => http://twitter.com/twitter

[meta] => Array

(

[0] => Array

(

[property] => foaf:name

[content] => Twitter

)

)

)

)

)

)

我可以重复一些价值观……比如

echo $array["query"]['count']."
";

echo $array["query"]["results"]["item"]["resource"];

但是,当我想使用[meta] => Array时

我无法使用:(

echo $array["query"]["results"]["item"]["resource"]["meta']["0"["content"];

请指引我

您应该使用您的调试技巧来解决这类问题。

首先,print_r()你的$array,你做到了。

然后是print_r($array['query'])。

然后是print_r($array['query']['results'])。

等等,等等

当您到达print_r($array["query"]["results"]["item"]["resource"])时,您会看到结果不是一个数组,而是一个标量,因此您需要一个不同的索引。

祝你好运!

嗨,谢谢你分享这个精彩的提示……非常有帮助。

+教鱼1)

@谢谢:)

可能是因为您没有正确关闭["0"]数组

echo $array["query"]["results"]["item"]["resource"]["meta"][0]["content"]

不仅是[0],还有meta。

从您的粘贴:

[query] => Array (

[results] => Array (

[item] => Array (

[resource] =>"http://twitter.com/twitter"

[meta] => Array (

[0] => Array (

[content] =>"Twitter"

(...)

$array["query"]["results"]["item"]["resource"]不是数组,它是字符串;您可能需要meta数组,它位于$array["query"]["results"]["item"]内部(与resource的级别相同)。这应该有效:

echo $array["query"]["results"]["item"]["meta"]["0"]["content"];

此外,您还犯了两个错误:

["meta']—你用双引号"打开meta,用单引号'关闭meta—它们必须是相同的—例如['meta']。

["0"—你没有关上支架—例如['0']。

+第一个注意到资源是字符串的人。

是的,很好的接球+1

echo $array["query"][count]."
";

echo $array["query"]["results"]["item"]["resource"];

count应该是"count",否则php认为count是一个常量。

echo $array["query"]["results"]["item"]["resource"]["meta']["0"["content"];

"meta'应该是"meta",您必须使用相同的报价类型。

["0"应为["0"]或[0]—必须关闭支架。

谢谢你的小费。

你忘了]在["0"]

也不要使用"大约0",因为您是按索引而不是按名称调用thins elemnt:

$array["query"]["results"]["item"]["resource"]["meta"][0]["content"]

对于meta,您使用了两种不同的类型。一次"一次"。"关闭"必须与"打开"类型相同。

对这篇文章的长度感到抱歉-它更像是一个迷你教程,但希望这能给你一些好的概念,让你可以利用它来解决这个问题。我会推荐几种方法。

建议1,当您使用打印时,请尝试如下使用:

print_r ($array[query], 1);

这将允许您通过将返回标志设置为"真"来添加"返回"。这样做的好处是您可以像这样嵌入它:

[cc lang="php"] <?php  echo (print_r($array[query], 1)); ?>

这将在HTML中打印一个"预格式化"数组,它将保留所有空格和换行符。有关详细信息,请参阅http://php.net/manual/en/function.print-r.php。我不会详细介绍如何执行此操作,但这里有很多教程可以帮助您开始:http://www.java2s.com/code/php/data-structure/loopingthroughamultimensionalarray.htm(也可以是http://php.net/manual/en/control-structures.foreach.php)。

下面是一个使用上面的对象代码的简单示例:

建议2.当我使用由数据库结果生成的API和"数组"时,我经常会发现类型实际上是错误的。例如,您经常会得到一些看起来像数组,但实际上是stdObject的东西。即使不是这样,我也建议您尝试这个函数(从http://php.net/manual/en/function.var dump.php):

[cc lang="php"]<?php

$a = array(1, 2, array("a","b","c"));

var_dump($a);

?>

对象和数组做类似的事情,但是使用这种方法可以避免注意和可能的心痛,因为var_dump还显示对象类型和长度。您可以尝试:

$book = new stdClass;

$book->title ="Harry Potter and the Prisoner of Azkaban";

$book->author ="J. K. Rowling";

$book->publisher ="Arthur A. Levine Books";

$book->amazon_link ="http://www.amazon.com/dp/0439136369/";

?>

[cc lang="php"]

ob_start();

var_dump($book);

$a = ob_get_clean();

$b = print_r($book,1);

echo($a."

".$b);

?>

这也引入了输出缓冲,这可能会影响性能,但我已经节省了像这样的失败调试的5个小时(另外,您还需要使用Zend调试或xdebug之类的东西)。这里有一点关于使用var_dump的php输出缓冲:如何将var_dump的结果捕获到字符串中?

[collapse title=""]
  • 谢谢你的迷你教程……我学习了一些新东西:)
  • 没问题,hth;)
[/collapse]
[wp_ad_camp_2]

Morgen32是正确的。你还没关门呢[

此外,您还可以通过键入

[cc lang="php"]echo"[cc lang="php"]".print_r($array, true)."

在代码中创建数组的位置下方。


不要将数字索引(0)括在引号中:

[cc lang="php"]echo $array["query"]["results"]["item"]["resource"]["meta"][0]["content"];

编辑:IIRC数字索引和字符串索引有区别。然而,真正的问题似乎是您没有结束一个括号,并且在meta周围混合了单/双引号。

这应该报告语法错误…

这没关系,不管索引是否在引号中,您仍然可以得到值。

但是我得到了期望的输出,即使是用["0"]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值