簡體   English   中英

將數組值分配給字段

[英]Assign array value to a field

我正在遷移,並且正在遷移已被標記文檔的分類術語。 文檔中的術語用逗號分隔。 到目前為止,我已經設法將每個術語分開並將其放入一個數組中,如下所示:

public function prepareRow($row) {
    $terms = explode(",", $row->np_tax_terms);
        foreach ($terms as $key => $value) {
          $terms[$key] = trim($value);
        }
        var_dump($terms);
        exit;
}

當我將其轉儲到終端時,這給了我以下結果:

array(2) {
  [0]=>
  string(7) "Smoking"
  [1]=>
  string(23) "Not Smoking"
}

現在我有兩個字段field_onefield_two ,我想將數組的值0放入field_one並將值1放入field_two例如

field_one=[0]$terms;

我知道這是不正確的,而且我不確定如何執行此部分。 關於如何執行此操作有什么建議嗎?

如果您只想將分類術語的字符串值存儲到節點的其他字段中,那么以下代碼應該可以解決問題:

$node->field_one['und'][0]['value'] = $terms[0];
$node->field_two['und'][0]['value'] = $terms[1];
node_save($node);

請注意,您將需要首先加載該節點,如果需要幫助,請在此處評論並更新我的答案。

您正在專門詢問ArrayList和HashMap,但我認為要完全了解正在發生的事情,您必須了解Collections框架。 因此,ArrayList實現List接口,而HashMap實現Map接口。

List:

有序集合(也稱為序列)。 該界面的用戶可以精確控制列表中每個元素的插入位置。 用戶可以通過其整數索引(列表中的位置)訪問元素,並在列表中搜索元素。

Map:

將鍵映射到值的對象。 映射不能包含重復的鍵; 每個鍵最多可以映射到一個值。

因此,正如其他答案所討論的那樣,列表接口(ArrayList)是使用索引訪問的對象的有序集合,就像數組一樣(就如ArrayList一樣,顧名思義,它只是數組中的一個數組)。背景,但是處理數組的許多細節已為您處理)。 當您要使事物保持排序順序(它們的添加順序,或者實際上是您添加對象時指定的列表位置)時,可以使用ArrayList。

另一方面,Map接受一個對象,並將其用作另一個對象(值)的鍵(索引)。 因此,假設您有具有唯一ID的對象,並且您知道某個時候要通過ID訪問這些對象,Map將使您非常容易(並且更快/更高效)。 HashMap實現使用鍵對象的哈希值來定位它的存儲位置,因此不再保證值的順序。

您可能想嘗試:

list($field_one, $field_two) = prepareRow($row);

list函數將數組中的條目(按順序)映射到通過引用傳遞的變量。

這有點脆弱,但是只要知道在prepareRow結果中至少有兩個項目, prepareRow

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM