質問文のJavaScriptコードを下記のようにしてみてはいかがでしょうか。
JavaScriptでvar users[];
で配列は作れません(質問文のタイプミスでしょうか?)。JavaScripの配列構造が決まっているのであれば、初期化時にvar users = ['文字列','文字列',,,];
のように作ったほうが良いと思います。
JavaScripの文字列は'文字列', "文字列"
とします。どちらでも同じで、PHPのような変数展開機能はありません。
php
1//...
2
3<script>
4<?php
5 //配列をフィルター
6 $user = array_filter($user, function($val) {
7 return !empty($val);
8 });
9 //文字列に変換("'xxx','xxx'")
10 $user = "'". implode("','", $array) ."'";
11?>
12
13//var users出力 ['xxx','xxx']
14var users = [<?php echo $user; ?>];
15
16</script>
17</body>
質問文のJavaScriptに忠実に書くなら下記のような方法かと思います。
php
1//...
2
3<script>
4//var users = new Array() と同じ
5var users = [];
6
7var users[0] = '<?php echo $user[1] ?>';
8var users[1] = '<?php echo $user[2] ?>';
9var users[2] = '<?php echo $user[3] ?>';
10
11<?php
12/*
13 //ループで書く方法
14 for ($i=0, $j=0; $i<count($user); $i++) {
15 if (!empty($user[$i])) {
16 echo 'users['. $j .'] = \''. $user[$i] .'\';'; //users配列に格納
17 $j++;
18 }
19 }
20*/
21?>
22</script>
23</body>