我希望从HTML表单中迭代一些$ _POSTed变量。不幸的是,我无法弄清楚访问每个“行”来做它的东西。
$_POST['names'] = array('alan', 'bob', 'carl', 'dan', 'ed');
$_POST['emails'] = array('0@.com', '1@com', '2.com', '3.com', '4.com');
$data=$_POST;
foreach($data as $index=>$row){
doSomethingNames($row[$index]); //in reality, this would be a more complicated function that needs to access each row's variables, same for printEmails()
doSomethingEmails($row[$index]);
}
function doSomethingNames($row){
print_r($row['names']);// should print alan-bob-carl-dan-ed
}
function doSomethingEmails($row){
print_r($row['emails']); //should print 0.com-1.com-2.com-3.com-4.com
}
运行此代码目前不打印任何内容。任何人可能提供的任何帮助,以帮助我访问每一行的数据将不胜感激。
答案 0 :(得分:2)
更好的方法是使用另一种数组结构:
<?php
$data['names'] = array('0aa', '1bb', '2cc', '3dd', '4ee');
$data['emails'] = array('AA', 'BB', 'CC', 'DD', 'EE');
$united_data = array();
$count = count( $data['names'] );
for( $i = 0; $i < $count; $i++ )
{
array_push( $united_data,
array( 'name' => $data['names'][$i], 'email' => $data['emails'][$i] )
);
}
foreach( $united_data as $key => $val ){
printNames( $united_data[$key] );
printEmails( $united_data[$key] );
}
function printNames( $row ){
echo 'name: ' . $row['name'] . ', ';
}
function printEmails( $row ){
echo 'email: ' . $row['email'] . '<br>';
}
答案 1 :(得分:1)
这可以这样完成:
$data['names'] = array('0aa', '1bb', '2cc', '3dd', '4ee');
$data['emails'] = array('AA', 'BB', 'CC', 'DD', 'EE');
foreach($data as $index => $row){
echo $index . ': ' . implode('-', $row);
}
这将打印索引的名称,并使用implode()来获取元素的字符串。
新例子:
$data['names'] = array('0aa', '1bb', '2cc', '3dd', '4ee');
$data['emails'] = array('AA', 'BB', 'CC', 'DD', 'EE');
for ($i = 0; $i < count($data['names']); $i++) {
echo $data['names'][$i] . ': ' . $data['emails'][$i] . '<br />';
}
仅当两个数组的元素数相同时才有效。
答案 2 :(得分:0)
你试图完成你想要的方式绝对不是一种有效的方法。使用PHP的数组函数implode()
。
function printNames($row) {
echo implode("-", $row['names']);
}
这样做迭代遍历数组的每个成员并返回一个字符串,其中迭代值以“glue”(在这种情况下为减号)分隔。请记住,胶水是可选的,执行以下操作也是有效的(尽管不鼓励,最好使用空字符串代替胶水)。
function printNames($row) {
echo implode($row['names']);
}
答案 3 :(得分:0)
只需使用implode()
即可。它将数组中的值与-
连接起来。
function printNames($row){
print_r(implode('-',$row)); // should print 0aa-1bb-2cc-3dd-4ee
}
function printEmails($row){
print_r(implode('-', $row)); //should print AA-BB-CC-DD-EE
}
修改强>
foreach($data as $index => $row){
foreach($row as $k =>$v) {
if($k === 'names')
printNames($v);
else
printEmails($v);
}
}
function printNames($elem){
print_r($elem); echo '-';// should print 0aa-1bb-2cc-3dd-4ee
}
function printEmails($element){
print_r($elem); echo'-'; //should print AA-BB-CC-DD-EE
}