【发布时间】:2018-09-19 06:47:07
【问题描述】:
我有这个结构(它是一个stdClass):
stdClass Object
(
[TitleA] => stdClass Object
(
[key1] => value1
[key2] => value2
[key3] => value3
)
[TitleB] => stdClass Object
(
[key1] => value1
[key2] => value2
)
)
编辑 1 感谢@John Ellmore,我将读取的 json 转换为关联数组,所以现在我有了这个:
Array
(
[TitleA] => Array
(
[key1] => value1
[key2] => value2
[key3] => value3
)
[TitleB] => Array
(
[key1] => value1
[key2] => value2
)
)
我能够循环并通过keys 和values 工作,但我需要确定当前循环迭代是否是最后一个。
$myFile = fopen($sourceFile, "r") or die("Unable to open the file !");
$content = json_decode(fread($myFile, filesize($sourceFile)));
fclose($myFile);
foreach( $content as $keys => $value ) {
//This loop allows me to work around with the keys
foreach($value as $index => $key) {
// And this loop allows me to work with the values
}
}
我需要做的是确定我何时处理循环中的最后一个title。我想我可以使用php end() function 来获取每次迭代中的最后一个键。但我不能做同样的事情来获取最后的标题名称。
所以我可以将最后一个与当前的进行比较,然后我会知道我当前是否正在循环通过最后一个。
是否可以将它们列在某种数组或类似的东西中?
【问题讨论】:
-
将 JSON 数据解码为关联数组而不是对象可能会有所帮助。例如。
json_decode($json, true)(第二个参数是布尔值true)。 -
投票++;谢谢 !这对我来说很容易到达我需要的地方吗?我现在会尝试解决它
-
我认为您可以简单地计算您的迭代次数(即创建一个计数器变量并在每次迭代时将其增加一个)。然后您可以将此计数器与
count($array)进行比较。还有一些方法可以找到数组的最后一个元素(end()函数的 PHP 手册在 cmets 中包含多个),但是由于这会更改内部数组指针,我不建议这样做。