2017-05-24 24 views
0

使用此行代碼時,我會得到以下輸出var_dump($ticket->find());如何在整個ALL對象中只訪問標識符?在PHP中選擇某些數據數組

我試過var_dump($ticket->find()->identifier);但它返回null。

array (size=2) 
    0 => 
    object(stdClass)[9] 
     public 'tid' => string '1' (length=1) 
     public 'uid' => string '22' (length=2) 
     public 'subject' => string 'iPhone 8' (length=8) 
     public 'issue' => string 'iPhone 8 screen replacement' (length=27) 
     public 'device' => string 'iPhone 8' (length=8) 
     public 'created' => string '2017-05-25 00:01:11' (length=19) 
     public 'identifier' => string '29cd54bf' (length=8) 
     public 'status' => string 'New' (length=3) 
     public 'tech' => string 'None' (length=4) 
    1 => 
    object(stdClass)[11] 
     public 'tid' => string '2' (length=1) 
     public 'uid' => string '22' (length=2) 
     public 'subject' => string 'iPhone 7' (length=8) 
     public 'issue' => string 'iPhone 7 screen replacement' (length=27) 
     public 'device' => string 'iPhone 7' (length=8) 
     public 'created' => string '2017-05-25 00:27:42' (length=19) 
     public 'identifier' => string 'b47f2c82' (length=8) 
     public 'status' => string 'New' (length=3) 
     public 'tech' => string 'None' (length=4) 
+1

'$ ticket-> find()[0] - > identifier'和'$ ticket-> find()[1] - > identifier'。你可以在'$ ticket-> find()[i] - > identifier'上使用循環。 –

+0

我應該想得更難一點。謝謝。 –

+0

'find()'方法來自哪裏?如果您使用的是框架,可能會有更直接的方法來實現您的目標。 –

回答

0

你可以使用array_map選擇您從find返回在array每個項目所需要的屬性:

$filteredFields = array_map(function ($item) { 
    // Return whatever properties you want here: 

    return [$item->tid, $item->$uid, $item->issue]; 
}, $ticket->find()); 

$filteredFieldsarraysarray

array(2) { 
    [0]=> array(3) { 
     [0]=> string(1) "1" 
     [1]=> string(2) "22" 
     [2]=> string(8) "iPhone 7" 
    } 
    [1]=> array(3) { 
     [0]=> string(1) "2" 
     [1]=> string(2) "22" 
     [2]=> string(8) "iPhone 7" 
    } 
} 

如果您只需要其中一個屬性,則可能更易於使用array_column

$subjectFields = array_column($ticket->find(), "subject"); 

這將返回的東西,看起來像這樣:

array(2) { 
    [0]=> string(8) "iPhone 8" 
    [1]=> string(8) "iPhone 7" 
} 

您還可以得到一個關聯數組指示爲關鍵第三個參數使用的領域:

$subjectsByTid = array_column($ticket->find(), "subject", "tid"); 

這將返回:

array(2) { 
    ["1"]=> string(8) "iPhone 8" 
    ["2"]=> string(8) "iPhone 7" 
} 
+0

當我'var_dump'數組映射它不會返回任何內容。當我需要返回表格中的所有票據時,這將是更有用的方法。 –

+0

@TrentonTyler當你調用'array_map'時,你提供的函數將被傳入的數組中的每個項目調用,這個函數是由'$ ticket-> find()'返回的,並且你從該函數返回的值,在這個例子中是另一個'array',將被添加到你所得到的'array'中。如果這不起作用,我會建議檢查你試圖獲得的參數是否可用。 – Danziger