Array Virgülle Birleştirme
PHP Ürün Varyant sistemi için Dinamik bir formdan gelen verileri eşleştirmem gerekli
array_combine denedim lakin işimi görmedi tavsiyeniz nelerdir
//POST ÇIKTIM
Array
(
[0] => Array
(
[kombin_63] => Array
(
[0] => 87 //40 numara
)
[kombin_15] => Array
(
[0] => 23 //mavi
[1] => 24 //kırmızı
[2] => 25 //mor
[3] => 26 //mavi
)
)
)
istediğim sonuç
(adsbygoogle = window.adsbygoogle || []).push({});
87,23
87,24
87,25
87,26
tarzında tabi bu Numara ve renk haricinde üçüncü bir seçenek daha içerebilir
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (4)
BU KOD OLAYI ÇÖZDÜ :)
function combinations($arrays, $i = 0) {
if (!isset($arrays[$i])) {
return array();
}
if ($i == count($arrays) - 1) {
return $arrays[$i];
}
$tmp = combinations($arrays, $i + 1);
$result = array();
foreach ($arrays[$i] as $v) {
foreach ($tmp as $t) {
$result[] = is_array($t) ?
array_merge(array($v), $t) :
array($v, $t);
}
}
return $result;
}
print_r(
combinations(
array(
array('87','99'),
array('23','24','25','29')
)
)
);
BU KODDA KOMBİNASYON SONRASI GÜZEL İŞ GÖRDÜ
$arr = [
"color" => [["name"=>"red"],['name'=>'yellow']],
"size" => [["name"=>"18 inch"], ["name"=>"15 inch"]],
"type" => [["name"=>"plastic"]],
"brand" => [['name' => 'something']],
];
function runFor($arr ,&$array, $keys,$index,&$positions){
foreach ($arr[$keys[$index]] as $key => $espec){
$positions[$keys[$index]] = $key;
if($index + 1 < count($keys)){
runFor($arr,$array,$keys, $index+1,$positions);
}else{
$item = (object)[];
foreach ($keys as $key){
$item->$key = $arr[$key][$positions[$key]]['name'];
}
array_push($array,$item);
}
unset($positions[$keys[$index]]);
}
}
$array = array();
$keys = array_keys($arr);
$positions = [];
runFor($arr,$array,$keys,0,$positions);
$combo = array();
foreach ($array as $item){
array_push($combo,json_encode($item));
}
var_dump($combo);
Olabildiğince dinamik yapmaya çalıştım ama yine de $deger değişkeni biraz statik sayılabilir
$array = [
[
'kombin_63' => [
87
],
'kombin_15' => [
23, 24, 25, 26
]
]
];
$combine = array_pop($array[0]);
$deger = current($array[0])[0];
foreach ($combine as $k => &$v)
$v = "$deger,$v";
print_r($combine);
// Array
// (
// [0] => 87,23
// [1] => 87,24
// [2] => 87,25
// [3] => 87,26
// )