我有一个像这样的数组:
[0]
{
Array[0] { First_Name => "john" }
Array[1] { Last_Name => "smith" }
Array[2] { Job => "Worker Ant" }
}
[1]
{
Array[0] { First_Name => "jane" }
Array[1] { Last_Name => "smith" }
}
等。我们称之为peopleArray
;
我还有一组键,例如"First_Name, Last_Name"
,它们与上面示例中的键匹配。我称之为headingArray
。
我想用这样的逗号分隔peopleArray
:
"'john', 'smith', 'Worker Ant'"
'jane','smith',''
headingArray
中没有键的值只是一个空字符串。
我一直在尝试这样的事情:
for($i=0; $i < count($headingArray); $i++){
foreach($peopleArray as $row){
foreach($row as $data){
if(key($data) == $headingArray[$i]){
echo '"'.current($data).'",';
}
}
}
//die();
echo "\r\n";
}
我遍历每个标题并尝试匹配值,但它显然不起作用。
必须有一种更简单的方法。
任何人都可以帮助我/指出正确的方向吗?我几个小时都在捣鼓我的大脑。
编辑:我想出了这个。它回应了我需要的所有值,但跳过那些不存在的值时做了一些奇怪的事情:
foreach($peopleArray as $person) {
$prevKey = array();
$numItems = count($person);
$i = 0;
foreach($person as $heading) {
foreach($person as $key => $value) {
if(key($value) == $heading){
echo '"'.str_replace(',',' ',current($value)).'",';
$prevKey[] = key($value);
break;
} else if(in_array(key($value), $prevKey)) {
} else {
echo '"",';
}
}
//die(var_dump($prevKey));
$i++;
}
echo "\r\n";
}
如果它不存在,我需要它返回一个空字符串。
答案 0 :(得分:1)
尝试使用对象:
<?php
class Worker
{
//without getters/setters, just idea
private $first_name;
private $last_name;
private $job;
public function __toString()
{
return "'".implode("', '", get_object_vars($this))."'";
}
}
//let's assume we have array of Worker objects
foreach ($Workers as $Worker)
{
print $Worker.PHP_EOL;
}
答案 1 :(得分:0)
foreach($peopleArray as $p)
{
foreach($i=0,$l=count($headingArray);$i<$l;$i++)
{
$value = isset($p[$headingArray[$i]]) ? $p[$headingArray[$i]] : '';
$comma = $i<($l+1) ? ',' : '';
echo '"' . $value . '"', $comma;
}
echo "\r\n";
}
答案 2 :(得分:0)
这样的事情应该做:
foreach($peopleArray as $person) {
foreach($person as $keyValue) {
foreach($keyValue as $key => $value) {
if(in_array($key, $headingArray)) {
echo '"'.$value.'", ';
} else {
echo '"", ';
}
}
}
echo "\r\n";
}