Php 函数作为函数的参数
我有两个功能: 复选框创建者:Php 函数作为函数的参数,php,function,parameters,Php,Function,Parameters,我有两个功能: 复选框创建者: function AddCheckBoxes($title,$box_values,$box_titles){ echo '<div class="form-group"><label>' . $title . '</label>'; $boxes_values_titles = new MultipleIterator(); $boxes_values_titles->attachIterator
function AddCheckBoxes($title,$box_values,$box_titles){
echo '<div class="form-group"><label>' . $title . '</label>';
$boxes_values_titles = new MultipleIterator();
$boxes_values_titles->attachIterator(new ArrayIterator($box_values));
$boxes_values_titles->attachIterator(new ArrayIterator($box_titles));
foreach ( $boxes_values_titles as $value ) {
list($box_values, $box_titles) = $value;
echo '<div class="checkbox"><label><input type="checkbox" value="' . $box_values . '">' . $box_titles , '</label></div>' , PHP_EOL;
}
}
function AddBasicTabsPanel($tabs_ids,$tabs_names,$tabs_data){
//START TABS HEADERS
echo '<ul class="nav nav-tabs">';
//PRINT TABS HEADERS
$tabs_ids_names_data = new MultipleIterator();
$tabs_ids_names_data->attachIterator(new ArrayIterator($tabs_ids));
$tabs_ids_names_data->attachIterator(new ArrayIterator($tabs_names));
$tabs_ids_names_data->attachIterator(new ArrayIterator($tabs_data));
foreach ( $tabs_ids_names_data as $ids_names_data ) {
list($tabs_ids, $tabs_names, $tabs_data) = $ids_names_data;
echo '<li><a href="#' . $tabs_ids . '" data-toggle="tab">' . $tabs_names . '</a></li>' , PHP_EOL;
}
//END TABS HEADERS
echo '</ul>';
//START TAB PANES
echo '<div class="tab-content">';
//PRINT TAB PANES
foreach ( $tabs_ids_names_data as $ids_names_data ) {
list($tabs_ids, $tabs_names, $tabs_data) = $ids_names_data;
echo '<div class="tab-pane fade" id="' . $tabs_ids . '"><h4>' . $tabs_names . '</h4>' . $tabs_data . '</div>' , PHP_EOL;
}
//END TAB PANES
echo '</div>';
}
我得到了一个包含所有显示数据的适当的tabs元素。图片:
但是,当我想用复选框功能替换tabs_data中的文本时,复选框会显示在带有选项卡的面板之前
AddBasicTabsPanel(["One","Two","Three"],["One","Two","Three"],[AddCheckBoxes("Checkboxes",["20","39","31"],["One","Two","Three"]),"Some data","More data"]);
图片:
我花了几个小时试图解决这个问题,但不知道如何使用复选框函数作为创建选项卡的面板函数的参数。我哪里出错了?您以前看到过复选框,因为这是函数执行的顺序。您遇到的问题是AddCheckBox在AddBasicTabsPanel之前被调用,它打印出内容并返回null。意思是你的代码是
AddBasicTabsPanel([“一”、“二”、“三”]、[“一”、“二”、“三”]、[null”、“一些数据”、“更多数据])代码>
function AddCheckBoxes($title,$box_values,$box_titles) {
$result = '';
$result+= '<div class="form-group"><label>' . $title . '</label>';
$boxes_values_titles = new MultipleIterator();
$boxes_values_titles->attachIterator(new ArrayIterator($box_values));
$boxes_values_titles->attachIterator(new ArrayIterator($box_titles));
foreach ( $boxes_values_titles as $value ) {
list($box_values, $box_titles) = $value;
$result+= '<div class="checkbox"><label><input type="checkbox" value="' . $box_values . '">' . $box_titles . '</label></div>' . PHP_EOL;
}
return $result;
}
此外,您不需要乘法器()
函数添加复选框($title,$checkbox){
$result=''.$title';
foreach($checkbox作为$checkbox){
$result+='.$checkbox['title].'.PHP\u EOL;
}
返回$result;
}
$复选框=[
[
“标题”=>“复选框1标题”,
“值”=>20,
],
[
“标题”=>“复选框2标题”,
“值”=>39,
],
];
$checkboxHtml=addcheckbox('Checkbox-title',$Checkbox);
@Biffen感谢您编辑代码!因为addcheckbox
为复选框输出html。对于您的情况,它应该以字符串形式返回此html,该字符串将作为参数传递给AddBasicTabsPanel()
。我尝试在foreach函数中的“//PRINT TAB PANES”之后放置“return”而不是“echo”,但没有显示结果。也许我把“返回”放错地方了?我还是一名PHP初学者:)addCheckBox
应该返回值,而不是AddBasicTabsPanel
。我如何才能实现addCheckBox以字符串形式返回html?感谢回复!我试过了,但无法让您的第一个代码正常工作。感谢您提醒我们,每个参数可以代表一个选项卡,因为它使阅读和编码更加清晰。我使用multipleiterator是因为代码整洁,因为我在一个小组中工作,这使它更易于阅读(PHP代码不多,所以不会太慢页面加载)
function AddCheckBoxes($title,$box_values,$box_titles) {
$result = '';
$result+= '<div class="form-group"><label>' . $title . '</label>';
$boxes_values_titles = new MultipleIterator();
$boxes_values_titles->attachIterator(new ArrayIterator($box_values));
$boxes_values_titles->attachIterator(new ArrayIterator($box_titles));
foreach ( $boxes_values_titles as $value ) {
list($box_values, $box_titles) = $value;
$result+= '<div class="checkbox"><label><input type="checkbox" value="' . $box_values . '">' . $box_titles . '</label></div>' . PHP_EOL;
}
return $result;
}
$tab1 = [
'id' => 'tab1-id',
'name' => 'tab1-name',
'data' => 'tab1-data',
];
$tab2 = [
'id' => 'tab2-id',
'name' => 'tab2-name',
'data' => YourMethodThatReturnsWhateverHTMLYouWant(),
];
AddBasicTabsPanel($tab1, $tab2);
function AddCheckBoxes($title, $checkboxes) {
$result = '<div class="form-group"><label>' . $title . '</label>';
foreach($checkboxes as $checkbox) {
$result+= '<div class="checkbox"><label><input type="checkbox" value="' . $checkbox['value'] . '">' . $checkbox['title] . '</label></div>' . PHP_EOL;
}
return $result;
}
$checkboxes = [
[
'title' => 'checkbox1-title',
'value' => 20,
],
[
'title' => 'checkbox2-title',
'value' => 39,
],
];
$checkboxHtml = AddCheckBoxes('Checkbox-title', $checkboxes);