php
  • database
  • 2013-07-22 107 views 1 likes 
    1

    我從數據庫中獲取數據這樣組織一個數組?

    // Get WPDB Object 
    global $wpdb; 
    
    // Table name 
    $table_name = $wpdb->prefix . "postmeta"; 
    
    $layers = $wpdb->get_results("SELECT meta_value FROM $table_name WHERE meta_key = '_moon_sortable_content'"); 
    

    然後我附和了所有的值

    // Iterate over them 
    foreach($layers as $key => $value) { 
          foreach($value as $breakingbad) { 
          echo $breakingbad; 
          }   
    } 
    

    它返回Beach Day? || 309px || 838px || Array四個值..在那裏我有點困惑是如何把每個值轉換爲變量,例如。

    $top = 309px 
    $left = 838px 
    $content = Beach Day? 
    

    我會懷疑這樣的事情也許$breakingbad['top'], $breakingbad['left'], $breakingbad['content'](是的,我是看着破惡寫這篇笑)。我總是看到這一點,我只是不確定正確的做法,學習正確的術語會很棒,所以我可以谷歌這個信息,任何與此相關的內容的鏈接將是真棒,也是你的洞察力會讓我的一天!的var_dump

    結果:

    object(stdClass)#282 (1) { ["meta_value"]=> string(21) "I am changing text..." } 
    object(stdClass)#283 (1) { ["meta_value"]=> string(20) "288.00001525878906px" } 
    object(stdClass)#284 (1) { ["meta_value"]=> string(5) "808px" } 
    object(stdClass)#285 (1) { ["meta_value"]=> string(5) "Array" } 
    

    下面是表的樣子:

    metatable

    +0

    看起來像一個不好的數據庫模式開始... –

    +0

    這是爲什麼..你能解釋一下嗎? – Mike

    +0

    我不知道他的意思,但基於你的數據庫模式,沒有辦法100%確定哪個值是哪個。我的意思是,如果你也選擇meta_key並且metakey類似於「topVal」和「metavalue」等於「808px」,那很好,但是這樣做是不可能的。另一方面,像'Array'這樣的東西不應該進入你的數據庫,因爲當你試圖保存一個數組的變量時,'Array'出現在99%的情況下。同樣的事情發生,如果你試圖對一個數組的變量做'回聲'。 – Soundz

    回答

    0

    以及$value是那些包含4個值的數組。這意味着你必須爲頂部做$value['top']

    我建議你學習一些關於數組的東西。 將數組視爲變量列表。每個變量都可以通過一個鍵來訪問。

    +0

    好的,我如何關聯這四個特定的數組等於$ value ['top'] ..我相信它很容易,我只是學習像四年級的東西.. – Mike

    +0

    好吧,它已經是,如果你不確定關鍵試試'var_dump($ value);死;'這會輸出值的內容,包括數據類型和密鑰。其實所有的命名已經完成了你的查詢。鍵名是相應的表名。如果你從一個領域採取他們,你應該嘗試選擇另一個領域,使獨特的組合。 – Soundz

    +0

    好吧,很酷我之前使用過var_dump,但我不知道如何利用它輸出的內容,我再次運行它,並在OP中張貼了結果是什麼..它們都是[meta_value] – Mike

    0

    使用explode()

    $string = "Beach Day? || 309px || 838px || Array"; 
    $string = explode(" || ", $string); 
    
    $top = $string[1]; // 309px 
    $left = $string[2]; // 838px 
    $content = $string[0]; //Beach Day? 
    

    鍵盤:http://codepad.org/WVGR5Nd7

    +0

    如果數據不斷變化雖然改變? – Mike

    0

    您可以使用explode

    // Iterate over them 
    foreach($layers as $key => $value) { 
        foreach($value as $breakingbad) { 
        // split string with || as delimiter    
        $split = explode('||', $breakingbad); 
        $content = $split[0]; 
        $top = $split[1]; 
        $left = $split[2]; 
        $array = $split[3]; 
    
    }   
    } 
    

    請注意,只有在每個數據段的字符串格式一致的情況下,這項工作纔有效。你的最後一項是一個數組,所以你必須迭代它才能檢索它的值。

    +0

    是的,生病處理最後的價值後...我不知道它來自誠實最重要的是前三... – Mike

    +0

    到目前爲止這工作,仍然擺弄它,再次感謝..病很快回到這裏。 – Mike

    相關問題