2013-09-20 5 views
0

Как я могу обновить, если пусть пользователь вводит химию и биологию, что они хотят скидку. Как перейти к вложенному массиву пользователей, itemprice, чтобы обновить его значение?Обновление mutliple значения вложенного массива

[name] => xxxx 
    [phone] => xxxxx 
    [email]xxxxx 
    [itemprices] => Array ([0] => 1.00 [1] => 1.00 [2] => 1.00) 
    [iteminfo] => Array ([0] => Chemistry [1] => Biology [2] => Mathematics) 
    ) 

Я попытался с ниже решения, но когда я обновляю только химию, она обновит биологии и математики-х itemprice вместе.

Почему это так?

$subject = 'Chemistry'; 
$index = array_search($subject, $user->iteminfo); 
if (false !== $index) { 
    $user->itemprices[$index] = $newvalue; 
} 
+0

Пожалуйста, укажите больше информации о желаемой логике. Теперь неясно. –

+0

Кажется довольно ясным для меня. OP хочет обновить товарные цены для определенного индекса, если он существует в массиве. – Jeemusu

+0

Кажется, вы смешиваете объект и массив. предоставить полный $ пользовательский массив или объект. –

ответ

1

Он работает как шарм я перезаписать его, вы можете попробовать его

$user = (object) array(
    'name' => 'xxxx', 
    'phone' => 'xxxxx', 
    'itemprices' => Array (1.00, 1.00, 1.00), 
    'iteminfo' => Array ('Chemistry', 'Biology', 'Mathematics') 
    ); 

echo "<pre>"; 
var_dump($user); 
echo "</pre>"; 


$newvalue = 2.0; 
$subject = 'Chemistry'; 

$index = array_search($subject, $user->iteminfo); 
if (false !== $index) { 

    $user->itemprices[$index] = $newvalue; 

} 

echo "<br><br><pre>"; 
var_dump($user); 
echo "</pre>"; 

выходные

object(stdClass)#21 (4) { 
    ["name"]=> 
    string(4) "xxxx" 
    ["phone"]=> 
    string(5) "xxxxx" 
    ["itemprices"]=> 
    array(3) { 
    [0]=> 
    float(1) 
    [1]=> 
    float(1) 
    [2]=> 
    float(1) 
    } 
    ["iteminfo"]=> 
    array(3) { 
    [0]=> 
    string(9) "Chemistry" 
    [1]=> 
    string(7) "Biology" 
    [2]=> 
    string(11) "Mathematics" 
    } 
} 


object(stdClass)#21 (4) { 
    ["name"]=> 
    string(4) "xxxx" 
    ["phone"]=> 
    string(5) "xxxxx" 
    ["itemprices"]=> 
    array(3) { 
    [0]=> 
    float(2) 
    [1]=> 
    float(1) 
    [2]=> 
    float(1) 
    } 
    ["iteminfo"]=> 
    array(3) { 
    [0]=> 
    string(9) "Chemistry" 
    [1]=> 
    string(7) "Biology" 
    [2]=> 
    string(11) "Mathematics" 
    } 
} 
0

Вы смешиваете объекты и массивы, изменить $ user-> iteminfo в $ user ['iteminfo'] и $ user-> itemprices [$ index] до $ user ['itemprices'] [$ index], и он будет работать правильно.

Смежные вопросы