在PHP中创建一个关联数组



我是一个编程初学者;在从现有关联数组

创建关联数组时,我卡住了
<?php
$arr = array( 
array(
"question"=>"I get irritated easily.",
"answer"=>"1"
),
array(
"question"=>"I spend time reflecting on things.",
"answer"=>"1"
),
array(
"question"=>"I am quiet around strangers.",
"answer"=>"1"
),
array(
"question"=>"I make people feel at ease.",
"answer"=>"1"
),
array(
"question"=>"I am exacting in my work.",
"answer"=>"1"
),
array(
"question"=>"I often feel blue.",
"answer"=>"3"
),
array(
"question"=>"I am full of ideas.",
"answer"=>"4"
)
);


$answer_array = array();
foreach( $arr as $questions ) {
$answer_array['text']=$questions['answer'];
}
print_r( $answer_array );
?>

我想要$answer_array在以下格式:answer_array美元("text"=; 1, 1, 1, 1, 1, 3, 4")

但是我没有得到正确的答案,因为它以以下方式显示:

Array
(
[text] => 4
)

这是因为它在迭代时覆盖所有其他值,只存储最后一个值。如上所述,我需要存储所有的值。请告诉我哪里错了。

您可以尝试通过更改

来连接这些值
$answer_array['text']=$questions['answer'];

if(isset($answer_array['text'])){
$answer_array['text'] .= ', '. $questions['answer'] ;
} else {
$answer_array['text'] = $questions['answer'];
}

你可以尝试使用array_map来获取每个问题的答案。

然后您可以使用implode通过分隔符连接字符串,在本例中是",":

$answer_array = array(
// Implode joins the strings
'text'=>implode(
// Replace this comma by another delimiter if you like
',',
// Array_map applies a function to every element in a array
array_map(
// Define a function that gets the answer to each question
fn($arr)=>$arr["answer"],
$arr
)
)
);
print_r( $answer_array );

尝试此在线

可以使用array_column函数

// Enter your code here, enjoy!
$arr = array( 
array(
"question"=>"I get irritated easily.",
"answer"=>"1"
),
array(
"question"=>"I spend time reflecting on things.",
"answer"=>"1"
),
array(
"question"=>"I am quiet around strangers.",
"answer"=>"1"
),
array(
"question"=>"I make people feel at ease.",
"answer"=>"1"
),
array(
"question"=>"I am exacting in my work.",
"answer"=>"1"
),
array(
"question"=>"I often feel blue.",
"answer"=>"3"
),
array(
"question"=>"I am full of ideas.",
"answer"=>"4"
)
);


print_r(array_column($arr, 'answer'));

https://onlinephp.io/c/51126

最新更新