Kullanıcının doldurabilmesi için birden fazla dizinin tüm özellik kombinasyonlarını ilişkili fiyat girişi ile göstermeye çalışacağım. Bundan sonra, giriş değerleri kaydedilecektir. veritabanına Bu örnek için PHP'de ilişkili giriş alanı olan dizilerden tüm öznitelik kombinasyonları nasıl oluşturulur
, ben 3 diziler kullanıyorum:function combination($array, $str = '', $valueKeys = '') {
$current = array_shift($array);
if(count($array) > 0) {
foreach($current as $k => $element) {
$valueKeys .= $k.'+';
combination($array, $str.' + '.$element, $valueKeys);
}
}
else{
foreach($current as $k => $element) {
$valueKeys .= $k;
echo '<label>'.substr($str, 3).' + '.$element . '</label> = <input name="attrib_price_'.$valueKeys.'" value="" /><br />' . PHP_EOL;
$valueKeys = '';
}
}
}
HTML Çıktı
<label>Small + 2 Layers + no fruit</label> = <input name="attrib_price_8+6+10" value="" /><br />
<label>Small + 2 Layers + w/ fruit</label> = <input name="attrib_price_9" value="" /><br />
<label>Small + 1 Layer + no fruit</label> = <input name="attrib_price_8+6+4+10" value="" /><br />
<label>Small + 1 Layer + w/ fruit</label> = <input name="attrib_price_9" value="" /><br />
<label>Round + 2 Layers + no fruit</label> = <input name="attrib_price_8+1+6+10" value="" /><br />
<label>Round + 2 Layers + w/ fruit</label> = <input name="attrib_price_9" value="" /><br />
<label>Round + 1 Layer + no fruit</label> = <input name="attrib_price_8+1+6+4+10" value="" /><br />
<label>Round + 1 Layer + w/ fruit</label> = <input name="attrib_price_9" value="" /><br />
kombinasyonları tüm gösterdi Aşağıdakiler kombinasyon fonksiyonu ile
[1] => Array
(
[8] => Small
[1] => Round
)
[2] => Array
(
[6] => 2 Layers
[4] => 1 Layer
)
[3] => Array
(
[10] => no fruit
[9] => w/ fruit
)
ama Fiyat giriş adlarıyla ilgili bir sorunum var, bunlar özellik anahtarlarını içermeli ama sadece bir tanesi düzeltmeli vb (8 + 6 + 10). Bunu yapmak için kodu nasıl değiştirebilirim? Öneriler karşılandı. Teşekkürler!
function combination($array, $str = '', $valueKeys = '') {
$current = array_shift($array);
if(count($array) > 0) {
foreach($current as $k => $element) {
combination($array, $str.' + '.$element, $valueKeys.$k.'+');
}
}
else{
foreach($current as $k => $element) {
echo '<label>'.substr($str, 3).' + '.$element . '</label> = <input name="attrib_price_'.$valueKeys.$k.'" value="" /><br />' . PHP_EOL;
}
}
}
Neden sadece yankılamamasını 'attrib_price_: else bölümünde – Yuri
kesinlikle haklısınız. –
Kodunu buna göre güncelledim, ikinci iterasyon tamam, ama üçüncü yineleme, giriş adında dört ids gösteriyor -
– Luis