Dapatkan nilai string jika nilai string lainnya berisi ya

if ( isset($_POST['figuresugsubjectposition'])) {
    $figuresubject_taxonomies = array( 'figuresugsubjectposition' => $_POST['figuresugsubjectposition']);
    $figuresubject_taxonomies_from = array( 'figuresugsubjectfrom' => $_POST['figuresugsubjectfrom']);
    foreach ( $figuresubject_taxonomies_from as $tax_name_from => $terms_from ) {
        $figuresubject_taxonomies_from = $terms_from;
    }
    //this will return: Blue, White, Green, Yellow, Black.. etc

    foreach ( $figuresubject_taxonomies as $tax_name => $terms ) {
        $figuresubject_taxonomies = $terms;
    }
    //this will return: yes, yes, no, yes, yes.. etc
}

Saya ingin $figuresubject_taxonomies_fnl hanya memiliki warna yang memiliki "ya" di string kedua. Dalam contoh di atas, $figuresubject_taxonomies_fnl akan bergema: Biru, Putih, Kuning, Hitam...dll.


person nidaelias    schedule 23.08.2014    source sumber


Jawaban (1)


Jika Anda tidak keberatan kehilangan kunci asli dalam array, Anda dapat melakukan ini:

<?php
$colours = array('black', 'orange', 'yellow');
$yes_no = array('yes', 'no', 'yes');

$combined = array_combine($colours, $yes_no);
$filtered = array_filter($combined, function($x) { return $x === 'yes'; });

$result = array_keys($filtered));

Sekarang $result akan menjadi array ini:

Array
(
    [0] => black
    [1] => yellow
)

array_combined mengembalikan larik baru, yang dibuat dari larik kunci (warna Anda) dan larik nilai ('ya' atau 'tidak'). array_filter hanya mengembalikan elemen yang fungsi panggilan baliknya mengembalikan true.

Alternatifnya, Anda bisa menggunakan loop:

$result = array();
for ($i = 0; $i < count($colours); ++$i) {
    if ($yes_no[$i] === 'yes') $result[] = $colours[$i];
}
person Tom Fenech    schedule 23.08.2014
comment
Terima kasih. Saya sudah memeriksa metode pertama. Itulah yang saya inginkan. Saya akan memeriksa metode lain dan membalasnya sesuai. - person nidaelias; 24.08.2014