我无法让in_array工作。它在一个函数中运行,该函数在我包含的文件中定义,然后从原始文件调用函数...这太复杂了,我将添加代码:
index.php
$results = $database->get_results($query);
foreach ($results as $question) {
echo '<div class="'.addQuestionClass($question).'"></div>';
}
functions.php
$sectionConfig = array(
'amount' => '20',
'types' => array('textarea', 'text', 'select', 'number'),
);
function addQuestionClass($question) {
if(is_array($question)) {
$order = 'order-'.$question['order'];
$id = ' question-'.$question['id'];
if(in_array($question['answer'], $sectionConfig['types'])) {
$answertype = ' type-'.$question['answer'];
echo 'true';
} else {
$answertype = null;
echo 'false';
}
return $answertype;
} else {
return;
}
}
问题代码在我的addClass函数中:
in_array($question['answer'], $sectionConfig['types'])
如果我运行相同的代码,使用粘贴在$ sectionConfig中的数组,如下所示,它可以正常工作,但它永远不会以我上面的格式识别。
这有效:
in_array($question['answer'], array('textarea', 'text', 'select', 'number'))
答案 0 :(得分:3)
您正在访问功能中的$sectionConfig
。默认情况下,这是另一个范围,函数中的代码不知道$sectionConfig
存在。
您可以尝试这样的事情:
$sectionConfig = array(
'amount' => '20',
'types' => array('textarea', 'text', 'select', 'number'),
);
$results = $database->get_results($query);
foreach ($results as $question) {
echo '<div class="'.addQuestionClass($question,$sectionConfig).'"></div>';
}
function addQuestionClass($question,$sectionConfig) {
if(is_array($question)) {
$order = 'order-'.$question['order'];
$id = ' question-'.$question['id'];
if(in_array($question['answer'], $sectionConfig['types'])) {
$answertype = ' type-'.$question['answer'];
echo 'true';
} else {
$answertype = null;
echo 'false';
}
return $answertype;
} else {
return;
}
}
答案 1 :(得分:1)
问题是您的变量$sectionConfig
不在您的函数范围内。您可以使用global
将其置于函数范围内,或将其作为变量传递:
function addQuestionClass($question) {
global $sectionConfig; // This gets your variable in the right scope.
if(is_array($question)) {
$order = 'order-'.$question['order'];
$id = ' question-'.$question['id'];
if(in_array($question['answer'], $sectionConfig['types'])) {
$answertype = ' type-'.$question['answer'];
echo 'true';
} else {
$answertype = null;
echo 'false';
}
return $answertype;
} else {
return;
}
}