एकल कॉलम को एक बहुआयामी सरणी से लौटाएं


79

मैं PHP में नौसिखिया हूँ और मुझे निम्नलिखित समस्या के त्वरित समाधान की आवश्यकता है लेकिन एक के साथ आने के लिए प्रतीत नहीं हो सकता है:

मेरे पास एक बहुआयामी सरणी है जैसे

Array
(
    [0] => Array
        (
            [blogTags_id] => 1
            [tag_name] => google
            [inserted_on] => 2013-05-22 09:51:34
            [inserted_by] => 2
        )

    [1] => Array
        (
            [blogTags_id] => 2
            [tag_name] => technology
            [inserted_on] => 2013-05-22 09:51:34
            [inserted_by] => 2
        )
)

मैं implode()किसी तरह का उपयोग करने के लिए एक अल्पविराम से अलग स्ट्रिंग tag_nameजैसे कुंजी के मानों को वापस करना चाहता हूं ।

google, technology

क्या उक्त कार्य के साथ इस प्रभाव को प्राप्त करना संभव है? यदि नहीं, तो कृपया एक वैकल्पिक समाधान सुझाएं।

जवाबों:


183

काफी सरल:

$input = array(
  array(
    'tag_name' => 'google'
  ),
  array(
    'tag_name' => 'technology'
  )
);

echo implode(', ', array_map(function ($entry) {
  return $entry['tag_name'];
}, $input));

http://3v4l.org/ltBZ0


और php में नया v5.5.0 array_column:

echo implode(', ', array_column($input, 'tag_name'));

4
ध्यान दें कि क्लोज़र केवल PHP 5.3 या इसके बाद के संस्करण के साथ समर्थित हैं।
लेओ लाम

2
> = 5.5.0 के लिए समाधान एकदम सही है!
की-सिक्स

दूर चल रहा है> 5.5 ... :)
विशाल कुमार साहू

13

यद्यपि यह प्रश्न स्ट्रिंग रूपांतरण से संबंधित है, मैंने अपनी लॉग फ़ाइलों में एरेज़ लिखने का एक आसान तरीका चाहते हुए इस पर ठोकर खाई। यदि आप केवल जानकारी चाहते हैं, और एक स्ट्रिंग की सटीक सफाई के बारे में परवाह नहीं करते हैं जो आप पर विचार कर सकते हैं:

json_encode($array)

मुझे पता है कि यह एक हैक की तरह लगता है, लेकिन एक आकर्षण (PHP 5.4 यहाँ) की तरह काम करता है। ;)
पाउलो बुएनो

1
@PauloBueno 2020 में आप वास्तव में, वास्तव में PPH 5.4 का उपयोग नहीं किया जाना चाहिए !!
मार्टिन

9

array_mapएक कॉल बैक फ़ंक्शन है, जहां आप पास की गई सरणी के साथ खेल सकते हैं। यह काम करना चाहिए।

$str = implode(',', array_map(function($el){ return $el['tag_id']; }, $arr));



3

यदि आप संबंधित "blogTags_id" उपयोग के साथ "tag_name" चाहते हैं: (PHP> 5.5)

$blogDatas = array_column($your_multi_dim_array, 'tag_name', 'blogTags_id');
echo implode(', ', array_map(function ($k, $v) { return "$k: $v"; }, array_keys($blogDatas), array_values($blogDatas)));

1

इस स्थिति में निहित ($ सरणी, ','); काम करेगा, क्योंकि आप केवल मूल्यों चाहते हैं। PHP में 5.6 मेरे लिए काम कर रहा है।

यदि आप कुंजियों और मानों को एक में
सम्‍मिलित करना चाहते हैं: blogTags_id: 1
tag_name: google

$toImplode=array();
foreach($array as $key => $value) {
$toImplode[]= "$key: $value".'<br>';
}
$imploded=implode('',$toImplode);

क्षमा करें, मैं गलत समझता हूं, शीर्षक "मल्टीप्लेयर सरणी से Implode डेटा" लिखें। खैर, मेरा जवाब अभी भी किसी तरह इसका जवाब देता है, किसी की मदद कर सकता है, इसलिए इसे हटा नहीं देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.