[英]Changing output text from array
我當前正在打印已過濾的表列名稱,但需要更改每個列的文本。 例如,以下內容:
$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
您有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;
您可以像這樣更改數組中的每一項;
$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
假設您在下面有一個名為$ 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>
我對此進行了測試,看來一切正常!
為什么要投票? 這項工作!!!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.