2011-11-02 15 views
5

पर आधारित सरल विभाजन सलाह के त्वरित भाग के लिए यह एक अनुरोध है, क्योंकि मुझे यह विश्वास करना बहुत मुश्किल लगता है कि काम के लिए मूल कार्य नहीं है। पर विचार करें निम्नलिखित:PHP सरणी। कुंजी

array => 
(0) => array("id" => "1", "groupname" => "fudge", "etc" => "lorem ipsum"), 
(1) => array("id" => "2", "groupname" => "toffee", "etc" => "lorem ipsum"), 
(2) => array("id" => "3", "groupname" => "caramel", "etc" => "lorem ipsum") 
) 

क्या मैं पाने के लिए देख रहा हूँ एक नई सरणी जो केवल "GROUPNAME" का उपयोग करता है, तो बराबर होगा:

array => 
(0) => "fudge", 
(1) => "toffee", 
(2) => "caramel" 
) 

मैं जानता हूँ कि इस के माध्यम से जा रिकर्सिवली प्राप्त करने के लिए बहुत आसान है मूल सरणी, लेकिन मैं सोच रहा था कि अंतिम परिणाम प्राप्त करने के लिए एक बहुत आसान तरीका है या नहीं। मैं इंटरनेट के आसपास और PHP मैनुअल पर देखा है और कुछ भी

इस सवाल साइमन

उत्तर

6

आप PHP 5.3 का उपयोग कर रहे हैं, तो आप array_map[docs] इस तरह उपयोग कर सकते हैं पढ़ने के लिए कृपया धन्यवाद नहीं मिल सकता है:

$newArray = array_map(function($value) { 
    return $value['groupname']; 
}, $array); 

अन्यथा एक सामान्य फ़ंक्शन बनाएं जिसका नाम पास हो (दस्तावेज़ीकरण देखें)।

एक अन्य समाधान सिर्फ सरणी पर पुनरावृति करने के लिए है:

$newArray = array(); 

foreach($array as $value) { 
    $newArray[] = $value['groupname']; 
} 

आप निश्चित रूप से प्रत्यावर्तन का उपयोग करने की जरूरत नहीं है।

+0

array_map! इतनी दयालु प्रतिक्रिया देने के लिए बहुत दयालु धन्यवाद। विचलन, माफी मांगने के बजाय मेरा कहना है। अच्छी चीजें :) – Simon

+0

@ सिमॉन: कोई समस्या नहीं :) मुबारक कोडिंग! –

0

जहां तक ​​मुझे पता है कि PHP में एक साधारण कार्य नहीं है जो आपके लिए इसे संभाल सकता है, सरणी संरचना उपयोगकर्ता परिभाषित है, आपको सरणी के माध्यम से लूप करना होगा।

for($i = 0;$i < count($main_array);$i++){ 
    $groupname_array[] = $main_array[$i]["groupname"]; 
} 
0
function array_get_keys(&$array, $key) { 
    foreach($array as &$value) $value = $value[$key]; 
} 
array_get_keys($array, 'groupname'); 

या

function array_get_keys(&$array, $key) { 
    $result = Array(); 
    foreach($array as &$value) $result[] = $value[$key]; 
    return $result; 
} 
$new_array = array_get_keys($array, 'groupname'); 
1

उपयोग array_map: सबसे आसान तरीका है मैं के बारे में सोच सकते हैं कुछ इस तरह होगा

<?php 
$a = array(
    array("id" => "1", "groupname" => "fudge", "etc" => "lorem ipsum"), 
    array("id" => "2", "groupname" => "toffee", "etc" => "lorem ipsum"), 
    array("id" => "3", "groupname" => "caramel", "etc" => "lorem ipsum") 
); 

function get_groupname($arr) 
{ 
    return $arr['groupname']; 
} 
$b = array_map('get_groupname', $a); 

var_dump($a); 
var_dump($b); 

http://codepad.org/7kNi8nNm

3

वहाँ एक निवासी हैarray_column() समारोह वास्तव में के लिए यह (पीएचपी 5.5 के बाद से): सभी सरणी कुंजी द्वारा

$column = array_column($arr, 'groupname'); 
1

मान:

$array = [ 
    ["id"=>"1","user"=>"Ivan"], 
    ["id"=>"2","user"=>"Ivan"], 
    ["id"=>"3","user"=>"Elena"] 
    ]; 

$res = []; 
$array_separate = function($value, $key) use (&$res){ 
    foreach($value AS $k=>$v) { 
     $res[$k][] = $v; 
    } 
}; 

array_walk($array, $array_separate); 
print_r($res); 

परिणाम:

Array 
(
    [id] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 3 
     ) 
    [user] => Array 
     (
      [0] => Ivan 
      [1] => Ivan 
      [2] => Elena 
     ) 

) 

http://sandbox.onlinephpfunctions.com/code/3a8f443283836468d8dc232ae8cc8d11827a5355

संबंधित मुद्दे