如何循环php数组
这是我的如何循环php数组,php,arrays,loops,Php,Arrays,Loops,这是我的产品阵列- Array ( [0] => Array ( [0] => 'Product1' [1] => [2] => [3] => [4] => 'Product2' [5] => [6] => [7] =>
产品
阵列-
Array
(
[0] => Array
(
[0] => 'Product1'
[1] =>
[2] =>
[3] =>
[4] => 'Product2'
[5] =>
[6] =>
[7] => 'Product3'
[8] => 'Product4'
[9] => 'Product5'
)
)
这是产品的类别
数组-
Array
(
[0] => Array
(
[0] => 'cat1'
[1] => 'cat2'
[2] => 'cat3'
[3] => 'cat4'
[4] => 'cat5'
[5] => 'cat6'
[6] => 'cat7'
[7] =>
[8] =>
[9] =>
)
)
此格式中需要的最终输出-
Array
(
'Product1' => Array(
[0] => 'cat1',
[1] => 'cat2',
[2] => 'cat1',
[3] => 'cat4'
),
'Product2' => Array(
[0] => 'cat5',
[1] => 'cat6',
[2] => 'cat7'
),
'Product3' => Array(
[0] => 'No Cat'
),
'Product4' => Array(
[0] => 'No Cat'
),
'Product5' => Array(
[0] => 'No Cat',
)
)
我试过了,但没有形成正确的输出--
$newarr=array();
foreach($productData[0]作为$arr1)
{
如果($arr1!='')
{
foreach($catData[0]作为$catnames){
$newarr[$arr1]=数组($compnames);
}
}
}
回声“;印刷费($newarr);
如果count($productData[0])==count($catData[0]),则可以使用for循环。
如果$productData[0][0]始终包含产品名称,则此操作应该有效
$newarr = array();
foreach( $productData[0] as $key => $product )
{
if( $product != '' )
{
$newarr[$product] = array();
$currentProduct = $product;
}
if( isset($catData[0][$key]) && ($catData[0][$key] != '') )
{
$newarr[$currentProduct][] = $catData[0][$key];
}
else
{
$newarr[$currentProduct][] = 'No Cat';
}
}
echo "<pre>";print_r($newarr);
如果count($productData[0])==count($catData[0]),则可以使用for循环。
如果$productData[0][0]始终包含产品名称,则此操作应该有效
$newarr = array();
foreach( $productData[0] as $key => $product )
{
if( $product != '' )
{
$newarr[$product] = array();
$currentProduct = $product;
}
if( isset($catData[0][$key]) && ($catData[0][$key] != '') )
{
$newarr[$currentProduct][] = $catData[0][$key];
}
else
{
$newarr[$currentProduct][] = 'No Cat';
}
}
echo "<pre>";print_r($newarr);
试试这个
$newarr=array();
foreach($productData[0]作为$key=>$product)
{
如果($product!='')
{
$newarr[$product]=array();
$currentProduct=$product;
}
如果(isset($catData[0][$key])&&($catData[0][$key]!=“”))
{
$newarr[$currentProduct][]=$catData[0][$key];
}
其他的
{
$newarr[$currentProduct][]=“无Cat”;
}
}
回声“;印刷费($newarr);
试试这个
$newarr=array();
foreach($productData[0]作为$key=>$product)
{
如果($product!='')
{
$newarr[$product]=array();
$currentProduct=$product;
}
如果(isset($catData[0][$key])&&($catData[0][$key]!=“”))
{
$newarr[$currentProduct][]=$catData[0][$key];
}
其他的
{
$newarr[$currentProduct][]=“无Cat”;
}
}
回声“;印刷费($newarr);
合并应如何进行?它背后的逻辑是什么?您是如何使用这些阵列的?请尝试此$newarr[$arr1][]=$compnames@Dasun逻辑是-产品数组在类别数组上迭代并填充类别,直到下一个产品名称相遇。如果它是一个密钥并迭代Angain,则该数据是否从数据库中提取?这是一个疯狂的处境。我只想活下去。合并应该怎么做?它背后的逻辑是什么?您是如何使用这些阵列的?请尝试此$newarr[$arr1][]=$compnames@Dasun逻辑是-产品数组在类别数组上迭代并填充类别,直到下一个产品名称相遇。如果它是一个密钥并迭代Angain,则该数据是否从数据库中提取?这是一个疯狂的处境。我只想活着。是的,第一个将始终包含一个名称..thx a lot+1和绿色勾选:)没问题!我刚刚意识到我没有处理“No Cat”。yes first将始终包含一个名称..thx a lot+1和绿色勾号:)没问题!我刚刚意识到我没有处理“无猫”。Thx bro用于另一个解决方案+1:)此解决方案也将处理“无猫”。:)应为$newarr[$currentProduct][]=$catData[0][$key];另请注意,isset(“”)将返回true。如果从excel导入空字段,则这些字段可能是空字符串,而不是null或false。已修复。。感谢您的反馈:)Thx bro用于另一个解决方案+1:)此解决方案还将处理“无Cat”。:)应为$newarr[$currentProduct][]=$catData[0][$key];另请注意,isset(“”)将返回true。如果从excel导入空字段,则这些字段可能是空字符串,而不是null或false。已修复。。感谢您的反馈:)
$newarr = array();
foreach( $productData[0] as $key => $product )
{
if( $product != '' )
{
$newarr[$product] = array();
$currentProduct = $product;
}
if( isset($catData[0][$key]) && ($catData[0][$key] != '') )
{
$newarr[$currentProduct][] = $catData[0][$key];
}
else
{
$newarr[$currentProduct][] = 'No Cat';
}
}
echo "<pre>";print_r($newarr);