2012-03-11 18 views
0

私は2つの異なるコードに基づいてワードクラウドを作成しようとしています。 Oneは各単語の単語と重みを持つ配列を返し、2番目の要素はこの配列を取り込んで単語cloudを作成します。しかし、私はどのようにphp配列をjavascript配列に変換するかわかりません。php配列をjavascript配列に変換する

PHPの配列コードは:エコー場合

<?php 
$arr = *data from database*; 
$string = implode(",", $arr); 
error_reporting(~E_ALL); 
$count=0; 
//considering line-return,line-feed,white space,comma,ampersand,tab,etc... as word separator 
$tok = strtok($string, " \t,;.\'\"!&-`\n\r"); 
if(strlen($tok)>0) $tok=strtolower($tok); 
    $words=array(); 
    $words[$tok]=1; 

    while ($tok !== false) { 
     //echo "Word=$tok<br />"; 
     $tok = strtok(" \t,;.\'\"!&-`\n\r"); 
     if(strlen($tok)>0) { 
      $tok=strtolower($tok); 

      if($words[$tok]>=1){ 
       $words[$tok]=$words[$tok] + 1; 
      } else { 
       $words[$tok]=1; 
      } 
     } 
    } 

これは、このような配列を返します。 アレイ([チェック] => 1)

javascriptのはこのフォームで配列を取り込みながら:

var word_list = [ 
      {text: "Lorem", weight: 15}, 
      {text: "Ipsum", weight: 9, url: "http://jquery.com/", title: "I can haz URL"}, 
      {text: "Dolor", weight: 6}, 
      {text: "Sit", weight: 7}, 
      {text: "Amet", weight: 5} 
      // ...other words 
     ]; 

はどうすればdoループのためのテキストと重量の変数に置き換えるためにPHPの配列を?

ご協力いただければ幸いです。あなたがphp配列の作成のためのコードが必要かどうか私に教えてください。

+0

[JSONをPHPからJavaScriptにリターンする]?(http://stackoverflow.com/questions/682260/returning-json-from-php-to-javascript) – epascarello

+0

@coding_newbieあなたの名前について考える必要がありますあなたはいつも初心者ではないので、専門家になってから同じ名前が好きですか? –

+0

あなたのサンプルのPHP配列は、質問の文脈で意味をなさない。私はあなたが尋ねていることを知っていると思うし、JSONだけでは答えはありません。しかし、あなたのデータのPHP版はたくさんあり、明らかにあなたがJS版として表示しているものと一致していないようです。 – JAAulde

答えて

1

これはそれを行う必要があります(あなたの現在のコードの後に​​配置):

$cloud = Array(); 
foreach ($words as $text => $weight) { 
    $cloud[] = Array('text' => $text, 'weight' => $weight); 
} 
echo json_encode($cloud); 

それは可能性を考慮していませんあなたの与えられたJSサンプルではurltitleなどですが、私はそれがあなたの後であると思います。 http://codepad.org/OnEDIe1l

もちろん、$wordsアレイを構築するPHPを調整して、自分のコードが$cloudで生成するものと既に一致するようにすることができます。しかし、$wordsで他のことをする必要があるかもしれません(現在のコードでトークン化中にカウントを維持する方が簡単です)。

+1

パーフェクト。それは私が欲しかったものを私に与えた。 –

+0

偉大な、それは助けてうれしい。 – JAAulde

0

あなたはjson_encode使用することができます。

$a = array("a" => 1, "b" => 2); 
print json_encode($a); 

出力:{"a":1,"b":2}

+0

私はもっとそれがあると思います。 OPはPHPのデータをクライアントサイドのコードで期待される構造に合わせて並べ替える必要があると言っているらしい。これを実行した後、JSONが適切なものになります。しかし、PHP側に与えられた貧弱なデータの例を考えれば、わかりにくいです。 – JAAulde

関連する問題