我目前正在打印表格列名,已过滤,但需要更改每个列的文本。 例如,以下内容:
$row = mysql_fetch_assoc($query_columns);
echo implode(', ', array_keys( array_filter( $row )));
输出:
column_one, column_two, column_five
在没有冗长的if语句的情况下,我能够实现的是一种完全控制输出的方法,例如更改每个...
预期产出:
This is column one, and Column two, but this is column five
非常感谢任何帮助!
表格结构:
Category
--------
user_id
live_out
live_in
short_term
weekday
weekend
unsure
当前输出(基于用户选择):
live_out, live_in, weekday
期望的输出:
Yes as live-out, Yes as live-in, Yes for regular weekdays
答案 0 :(得分:0)
你有echo implode(', ', array_keys( array_filter( $row )));
implode()使用数组将键连接到一个字符串。
一种解决方案是在迭代数组时使用字符串连接:
$array = array_keys( array_filter( $row ))); // gets you the keys array
$string = 'This is ';
foreach($array as $item)
{
$string .= $item . ', '; // append item to string with comma added
}
$string .= '. That's all.';
echo $string;
如果您想要每个项目的自定义文本,则需要在迭代时检测该项目。 您可以使用if和strpos(),如下所示:
$string = 'This is ';
foreach($array as $item)
{
$string .= $item . ', '; // append item to string with comma added
if(false !== strpos($item, 'Column One')) { // look for Column One in $item
$string .= ' (found column one)';
}
}
$string .= ' That's all.';
echo $string;
替换:
$string = str_replace('Column One', 'Column XXX', $string);
同时适用于多个项目
$replace = array('Column One', 'Column Two');
$with = array('Column XX1', 'Column XX2');
$string = str_replace($replace, $with, $string);
注意$string =
和$string .=
。
第一个赋值,第二个附加值。
根据您的表格结构
$string = '';
foreach($array as $item)
{
if(false !== strpos($item, 'live_out')) {
$string .= 'Yes for '. $item . ', ';
}
if(false !== strpos($item, 'live_in')) {
$string .= 'Yes for '. $item . ', ';
}
if(false !== strpos($item, 'weekdays')) {
$string .= 'Yes for regular '. $item;
}
}
echo $string;
答案 1 :(得分:0)
您可以像这样更改数组中的每个项目;
$column_names[0] = "Add this to the start of column one ". $column_names[0] . ", and this to the end of column one.";
0是数组中的第一项,1是第二项,依此类推。
请记住,在这种情况下,您需要对从array_keys获得的数组执行此操作。
否则你可以制作这样的函数;
function addStrToArrayElements($array, $str_start, $str_end, $array_keys=NULL){
foreach($array as $key => $item){
if(array_key_exists($key, $array_keys) || is_null($array_keys) ){
$ret[$key] = $str_start.$item.$str_end;
}
}
return $ret;
}
$ array是你想要更改元素的数组,$ str_start是放在项目前面的字符串,$ str_end是项目后面的元素,$ array_keys是一个元素你的元素键的数组想要改变,如果你把它留空,它将对$ array的所有元素做同样的事情。
对于上面的示例,您可以这样做:
$column_names = array_keys($row);
addStrToArrayElements($column_names, 'This is ', ',', array(0));
addStrToArrayElements($column_names, ' and ', ',', array(1));
addStrToArrayElements($column_names, ' but this is ', '', array(2));
$output = implode('', $column_names);
echo str_replace('column_', 'column ', $output);
那应该输出
This is column one, and column two, but this is column five
答案 2 :(得分:-1)
假设您在下面有以下名为$ array1的数组:
<?php
$array1 = array("hey","its","me","so","what");
$newarray = array();
$i=0;
foreach ($array1 as $value)
{
$newarray[] = "<span id=" . "color$i" . ">" . $value . "</span>";
$i++;
}
echo implode(",",$newarray);
?>
您可以使用该算法使用创建的跨度为所有列设置不同的样式。因此,例如,您可以在头部或外部样式表中设置样式,如下所示:
<style>
#color0{ color:red;}
#color1{ color:blue;}
#color2{ color:yellow;}
</style>
我测试了它,似乎工作得很好!
为什么要投票?这个工作!!!!!