PHP使用外部的foreach多维数据
使用以下php代码:PHP使用外部的foreach多维数据,php,codeigniter,multidimensional-array,foreach,Php,Codeigniter,Multidimensional Array,Foreach,使用以下php代码: $data['items'] = array('cars', 'bikes', 'trains'); $data['title'] = $parameters['title']; foreach ($searchResults as $key => $value) { switch ($key) { case "_cars": foreach ($searchResults['_cars']['items'] a
$data['items'] = array('cars', 'bikes', 'trains');
$data['title'] = $parameters['title'];
foreach ($searchResults as $key => $value)
{
switch ($key)
{
case "_cars":
foreach ($searchResults['_cars']['items'] as $car)
{
preg_match('@video/([^_]+)_([^/]+)@', $car['url'], $match);
$url = $match[1].'/'.$match[2];
$url = base_url().'video/'.substr($url,0,1).'d'.substr($url,1);
$data['data']['car']['url'] = $url;
$data['data']['car']['title'] = $car['title'];
$data['data']['car']['img'] = $car['thumbnail_medium_url'];
}
break;
// ................
我如何解决这个问题,或者我做错了什么,因为$['data']['car'][…]
只返回url、title和img的一个项目,在case“\u cars”:foreach…
之外,但在它内部返回所有数据
编辑:
但是我想知道为什么在
foreach($searchResults[''cars']['items'].
循环中打印r($data)会返回所有数据,而在foreach
循环之外只返回1?我不太确定您想要什么,但乍一看,似乎每次迭代都在覆盖数组键的实际值:
$data['data']['car']['url'] = $url; // this is overwritten each time
您需要创建一个迭代器并使用它:
$i = 0;
foreach ($searchResults['_cars']['items'] as $car)
{
preg_match('@video/([^_]+)_([^/]+)@', $car['url'], $match);
$url = $match[1].'/'.$match[2];
$url = base_url().'video/'.substr($url,0,1).'d'.substr($url,1);
$data['data']['car'][$i]['url'] = $url;
$data['data']['car'][$i]['title'] = $car['title'];
$data['data']['car'][$i]['img'] = $car['thumbnail_medium_url'];
$i++;
}
我不太确定您想要什么,但乍一看,似乎每次迭代都会覆盖数组键的实际值:
$data['data']['car']['url'] = $url; // this is overwritten each time
您需要创建一个迭代器并使用它:
$i = 0;
foreach ($searchResults['_cars']['items'] as $car)
{
preg_match('@video/([^_]+)_([^/]+)@', $car['url'], $match);
$url = $match[1].'/'.$match[2];
$url = base_url().'video/'.substr($url,0,1).'d'.substr($url,1);
$data['data']['car'][$i]['url'] = $url;
$data['data']['car'][$i]['title'] = $car['title'];
$data['data']['car'][$i]['img'] = $car['thumbnail_medium_url'];
$i++;
}
它只返回1项,因为您在foreach循环中覆盖了
$data
。这不是因为…我这样做是因为它在codeigniter中。它只返回1项,因为您在foreach循环中覆盖了$data
。这不是因为…我这样做是因为它在codeigniter中,但没有任何方法可以使用它g$i
?但我想知道为什么在foreach($searchResults[''cars']['items'])中打印($data)
。循环返回所有数据,并且只在1之外?@w0rldart,这是因为您正在覆盖$date['data']['car'['XXX']
而不是添加另一个数组值。这就像在每次迭代中设置$date\u url=$url;
并期望$date\u url
之后是一个数据数组。此外,$i
还确保每个数组键相同(特别是在foreach
中再次覆盖这些变量时)。在您的简单实现中,使用[]
而不是[$i]
是可行的,但不建议这样做。为了接受答案,我们不得不花上几分钟:)但是没有$i
就不能使用它吗?但是我想知道为什么要在foreach($searchResults[''u cars')中使用打印r($data)
['items']…
loop返回所有数据,并且只在1之外?@w0rldart,这是因为您正在覆盖$date['data']['car']['XXX']
而不是添加另一个数组值。这就像在每次迭代中设置$date\u url=$url;
并期望$date\u url
之后是一个数据数组。此外,$i
还确保每个数组键相同(特别是在foreach
中再次覆盖这些变量时)。对于您的简单实现,使用[]
而不是[$i]
将可行,但不建议这样做。必须等待几分钟才能接受答案:)