1. 程式人生 > >php列印輸出空格以及echo中.和,的區別

php列印輸出空格以及echo中.和,的區別

1、php中的點(.)和(,)的區別:

      (1):字串的連結,用的是點(.),不能用逗號(,)來代替;

      (2):在echo語句輸出的過程中,此時逗號(,)才有(好像)連結字串的作用,其速度要比點(.)快;

      (3):echo語句的多個引數用逗號(,)分開,和一個函式中的多個引數一樣;也就是說把echo當個函式用.這樣的話.echo會對每個引數先進行計算.最後再進行連線後輸出。

      綜上:“點號”是一個字串連線符,用來拼接字串把兩個或多個字串連結起來;

                 “逗號”並不是一個連線符,他只是在使用 echo 輸出一系列的變數、字串、數字等等內容時使用,或者說通過 echo 輸出多個東西時,用“逗號”分割開。

        比如:echo 'a,'b','c'  是依次輸出三個字串,相當於,echo 'a' ,  echo 'b' , echo  'c';

                   echo 'a'.'b'.'c' 是將三個字串拼接之後輸出;

<?php

$a= 1;
$b= 2;
$c= 3;

echo "$a+$b","$a+$c";        //1+21+3;   "$a+$b"是一個字串,"$a+$c"又是一個字串,"+"也僅僅代表字串中的一個字元,即:先後輸出1+2和1+3;但是在瀏覽器上看,這兩個輸出是挨在一起的,所以成1+21+3;

echo "<br/>";

echo "$a+$b"."$a+$c";         // 1+21+3; "."表示"$a+$b"和"$a+$c"兩個字串的拼接,即:1+2和1+3拼接,變成了1+21+3;再次宣告:在字串中,"+"僅僅代表一個字元,不具有計算屬性;

echo "<br/>";

echo "$a+$b".$a+$c;    // 4;此表示式表示,字串"$a+$b"與$a拼接,在與$c相加;即:'1+2'.1+3;然後進行拼接得到,'1+21'+3,最後一個字串和一個整數相加,字串先轉成整數,(根據字串最前面的數字定值);  

echo "<br/>";

echo   $a+$b,$a+$c;         // 34;  由於沒有"",故不再是一個字串,二是1+2,1+3;然後相加依次輸出3和4;

echo "<br/>";

echo $a+$b.$a+$c;          // 34;  兩個int數字相加,而.號將3和4轉換成了string相拼接,所以也是34.;

echo "<br/>";


function tect(){
	   
	echo '2222';
}
   

echo '111',tect().'3333';  //11122223333;一次輸出,'111',輸出tect(),輸出'333';
   
echo "<br/>";
   
echo '111'.tect().'3333';// 22221113333;點是將左右連線起來,所以在他會先解析左右兩邊是什麼東西,當他解析111的時候會先把111先儲存起來,然後解析tect(),這時候因為tect()是輸出函式,所以php會echo,然後再解析333,當他解析完了之後再echo。所以就是22221113333
  
?>  

點主要連結的是字串,在.(點)左右兩邊資料型別不一樣時候,應該先都轉化成字串連結起來,再最後的輸出整體

<?php
  
 echo $a+$b.$c;    //33    // 點左右兩邊都是整形數,左邊的直接相加後與後面的數字轉換成字串後輸出;
   
 echo "$a+$b".$c;    //1+23   //  左邊的是字串'1+2',所以右邊的3先轉化成'3'再與左邊的連結為:'1+2'.'3',最後結果是:1+23;
   
 echo "$a+$b".$a+$c;  // 4;  // 左邊同樣是字串'1+2', 而右邊不是字串,而是整形數字,所以先把$a的值1轉化為'1'進行拼接得到:'1+2'.1+3===>'1+21'+3,然後字串與整形3相加,得到4;
   
?>

2、php中的列印輸出空格;

<?php

echo  '1233'.'    '.'566';  //1233 566(瀏覽器只展示一個空格);而原始碼中看到的樣式為:1233    566(完整的空格位置數);為解決這一問題,可以用標準的特殊符號' '來表示空格;

echo '123334'.'    '.'8899'; // 123334    8899(此時瀏覽器展示4個空格),而原始碼的格式為:(123334    8899);

?>