iT邦幫忙

0

php陣列輸出結果

判斷式已經完成
下方有一個問題點的註解需要幫助

$data=array('filename'=>array());

$new_dataname=array('name'=>'jack','count'=>'0','data'=>array(array('time'=>'0:00','script'=>'ggg')));
array_push($data['filename'],$new_dataname);
$log='';
$findfilename=$data['filename'];

if($data['filename']){
		 //輸入變數為jack的時候
		 $filename='jack';
         for($i=0;$i<count($data['filename']);$i++){ 
            if ($data['filename'][$i]['name'] == $filename){               
             	$findfilename=array($data['filename'][$i]);
				$log='true';
				//break;
            }else{
				$log='false';				
			}
         //問題點   
		 if($log=='true'){
			$gg='gg';
			$new_dataname=array('time'=>'1:11','script'=>'fff');
			array_push($findfilename[0]['data'],$new_dataname); 
			
		 }else{
			$new_dataname=array('name'=>$filename,'count'=>'0','data'=>array(array('time'=>'0:00','script'=>'ggg')));
          	array_push($data['filename'],$new_dataname); 
			$gg='hh';
		 }			 
	}	
}else{
          echo 'no data';
          $new_dataname=array('name'=>'jack','count'=>'0','data'=>array(array('time'=>'0:00','script'=>'g88')));
          array_push($data['filename'],$new_dataname);
        }
print_r($data);

我希望進到問題點的的時候$data的輸出是

Array
(
    [filename] => Array
        (
            [0] => Array
                (
                    [name] => jack
                    [count] => 0
                    [data] => Array
                        (
                            [0] => Array
                                (
                                    [time] => 0:00
                                    [script] => ggg
                                )
                            [1] => Array
                                (
                                    [time] => 1:11
                                    [script] => fff
                                )

                        )

                )

        )

)

想請教一下這個的知識點
跟是否有更簡單的寫法感謝!!
線上執行php網址:https://c.runoob.com/compile/1

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
小魚
iT邦大師 1 級 ‧ 2021-06-27 17:03:05
最佳解答

你要的是把它變字串嗎?

$dataStr = print_r($data, true);
看更多先前的回應...收起先前的回應...

不是變字串喔
你可以改改看 這變數$filename='jack';
的data輸出
然後我執行問題點完成時希望data輸出是我上面貼的樣子

小魚 iT邦大師 1 級 ‧ 2021-06-27 17:58:15 檢舉

這關係有點複雜,
由右往左處理應該比較好處理,

先處理右邊陣列,

$data2 = [
    ['time' => '0:00', 'script' => 'ggg'],
    ['time' => '1:11', 'script' => 'fff'],
];

然後再加上一層

$data3 = [];
$data3['name'] = 'jack';
$data3['count'] = 0;
$data3['data'] = $data2;

然後左邊再加進來

$filename = [];
array_push($filename, $data3);

最後再加外層

$data = [
    'filename' => $filename,
];

我完成了我想要的輸出了 不過看起來是滿難看的
感覺你提供的方式應該可以讓我的code更乾淨
感謝大大的幫助!

小魚 iT邦大師 1 級 ‧ 2021-06-28 09:56:27 檢舉

如果有幫助的話,
最佳解答麻煩一下.

我要發表回答

立即登入回答