รับค่าของสตริงหากค่าสตริงอื่นมีค่าใช่

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
}

ฉันต้องการให้ $figuresubject_taxonomies_fnl มีเฉพาะสีที่มี "ใช่" ในสตริงที่สอง ในตัวอย่างข้างต้น $figuresubject_taxonomies_fnl จะต้องสะท้อน: น้ำเงิน ขาว เหลือง ดำ...ฯลฯ


person nidaelias    schedule 23.08.2014    source แหล่งที่มา


คำตอบ (1)


หากคุณไม่สนใจที่จะสูญเสียคีย์ดั้งเดิมในอาเรย์ คุณสามารถทำได้:

<?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));

ตอนนี้ $result จะเป็นอาร์เรย์นี้:

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

array_combined ส่งคืนอาร์เรย์ใหม่ที่สร้างจากอาร์เรย์ของคีย์ (สีของคุณ) และอาร์เรย์ของค่า ('ใช่' หรือ 'ไม่ใช่') array_filter ส่งคืนเฉพาะองค์ประกอบที่ฟังก์ชันเรียกกลับส่งคืน true

หรือคุณสามารถใช้การวนซ้ำ:

$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
ขอบคุณ ฉันได้ตรวจสอบวิธีแรกแล้ว นั่นคือสิ่งที่ฉันต้องการ ฉันจะตรวจสอบวิธีอื่นและตอบกลับตามนั้น - person nidaelias; 24.08.2014