当我回显数组时,结果是:
$Items = Array( [147] => Array([ItemName] => Array([0]=>White Snack [1]=>Dark Cookie) [ItemCode] => Array([0]=>IT-WS [1]=>IT-DC ) ) [256] => Array([ItemName] => Array([0]=>Soft Sandwiches [1]=>Hard Drinks) [ItemCode] => Array([0]=>IT-SS [1]=>IT-HD ) ))
现在我需要以表格形式显示以下结果,索引147和256,我会从一个单独的foreach循环中传递它们,以便获得正确的索引值。
----------- --------------- 147
姓名-----------------------------------代码
White Snack --------------------------- WS
Dark Cookie --------------------------- DC
----------- --------------- 256
姓名-----------------------------------代码
软三明治---------------------- SS
Hard Drinks ---------------------------- HD
无法实现这一目标。请帮忙。
$ItemIndexes = array(147,256);
foreach($ItemIndexes as $ItemMainIndex)
{
//further code here ,
//here I would send the $ItemMainIndex to the $Items array
//and get the corresponding index value and display it accordingly.
}
答案 0 :(得分:1)
你可以创建一个这样的函数:
function echoItemTable($num, &$items){
$val = $items[$num];
echo "<h2>".$num."</h2>";
echo "<table><thead><tr><th>Name</th><th>Code</th></tr></thead>";
echo "<tbody>";
foreach ($x = 0, $num = count($val["ItemName"); $x < $num; $x++){
echo "<tr><td>".$val["ItemName"][$x]."</td>";
echo "<td>".str_replace("IT-", "", $val["ItemCode"][$x])."</td></tr>";
}
echo "</tbody>";
echo "</table>";
}
并在您的代码中调用它,如
$ItemIndexes = array(147,256);
foreach($ItemIndexes as $ItemMainIndex)
{
echoItemTable($ItemMainIndex, $items);
}
答案 1 :(得分:1)
以下是如何迭代数据结构的示例。
$ItemIndexes = array(147,256);
foreach($ItemIndexes as $ItemMainIndex) {
$Item = $Items[$ItemMainIndex];
echo "<h1>-----------$ItemMainIndex---------------</h1>";
echo "<h2>Name ----------------------------------- Code</h2>";
$ItemNames = $Item['ItemName'];
$ItemCodes = $Item['ItemCode'];
for($i = 0; $i < count($ItemNames); $i++) {
$Name = $ItemNames[$i];
$Code = $ItemCodes[$i];
$Name = str_pad($Name . ' ', 40, '-');
echo "$Name $Code<br/>";
}
}
这不是特别好的标记 - 我们应该使用某种表格 - 但它会给你一些东西。
此外,这假设256和147条目在$ Items数组中处于同一级别,即数组如下所示:
$Items = Array(
147 => Array(
'ItemName' => Array(0=>'White Snack', 1=>'Dark Cookie' ),
'ItemCode' => Array(0=>'IT-WS', 1=>'IT-DC' )
),
256 => Array(
'ItemName' => Array(0=>'Soft Sandwiches', 1=>'Hard Drinks'),
'ItemCode' => Array(0=>'IT-SS', 1=>'IT-HD' )
)
);
这不是你问题中显示的结构。如果你真的需要支持那个确切的结构,那么代码会更复杂一些。
答案 2 :(得分:1)
你的数组的结构与显示器的结构不相符,所以我创建了一个具有不同结构的新数组
$prods = array();
foreach ($Items as $key => $group){
foreach ($group as $attr => $values){
foreach ($values as $key2 => $value){
$prods[$key][$key2][$attr] = $value;
}
}
}
var_dump($prods);
输出:
Array(
[147] => Array(
[0] => Array(
[ItemName] => White Snack
[ItemCode] => IT-WS
)
[1] => Array(
[ItemName] => Dark Cookie
[ItemCode] => IT-DC
)
)
[256] => Array
[0] => Array(
[ItemName] => Soft Sandwiches
[ItemCode] => IT-SS
)
[1] => Array(
[ItemName] => Hard Drinks
[ItemCode] => IT-HD
)
)
)
有了这个,我就开始制作一张桌子:
$table = '<table>';
foreach ($prods as $key => $group){
$table .= '<tr><td colspan="2">'.$key.'</td></tr>';
$table .= '<tr><td>Name</td><td>Code</td></tr>';
foreach ($group as $key2 => $values){
$table .= '<tr>';
foreach ($values as $attr => $value){
if ($attr == 'ItemCode'){
$parts = explode('-', $value);
$table .= '<td>'.$parts[1].'</td>';
} else {
$table .= '<td>'.$value.'</td>';
}
$prods[$key][$key2][$attr] = $value;
}
$table .= '</tr>';
}
}
$table .= '</table>';
通过一些样式,它可以显示或多或少的显示。在您发布的数组中,有一个不合适的括号,因此我使用的原始数组的结构是:
$Items = array(147 => array('ItemName' => array(0=>'White Snack',
1=>'Dark Cookie'),
'ItemCode' => array(0=>'IT-WS',
1=>'IT-DC')),
256 => array('ItemName' => array(0=>'Soft Sandwiches',
1=>'Hard Drinks'),
'ItemCode' => array(0=>'IT-SS',
1=>'IT-HD')));
答案 3 :(得分:0)
试试这个:
$Items = array( 147 => array("ItemName" => array("White Snack", "Dark Cookie"), "ItemCode" => array("IT-WS", "IT-DC" )),
256 => array("ItemName" => array("Soft Sandwiches", "Hard Drinks"), "ItemCode" => array("IT-SS", "IT-HD" ))
);
$result = array();
foreach($Items as $key => $Item){
$result[$key] = array_combine($Item["ItemName"], $Item["ItemCode"]);
}
echo "<pre>";
print_r($result);
输出:
Array
(
[147] => Array
(
[White Snack] => IT-WS
[Dark Cookie] => IT-DC
)
[256] => Array
(
[Soft Sandwiches] => IT-SS
[Hard Drinks] => IT-HD
)
)