PHP,多维阵列中的值变化

发布于 2025-02-01 22:16:25 字数 656 浏览 4 评论 0原文

我在PHP中获得了以下数组:

$data[] = array('Slug' => 'jan', 'Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3');
$data[] = array('Slug' => 'kjell', 'Name' => 'Kjell', 'Alter' => '4', 'Jahrgang' => '2018', 'ID' => '0');
$data[] = array('Slug' => 'bjarne', 'Name' => 'Bjarne', 'Alter' => '6', 'Jahrgang' => '2015', 'ID' => '2');
$data[] = array('Slug' => 'monika', 'Name' => 'Monika', 'Alter' => '72', 'Jahrgang' => '1950', 'ID' => '1');

如何输出“ jahrgang”的值“ slug = jan”?

我如何从1981年至1982年更改“ slug = jan”的“ jahrgang”?

没有任何办法没有供您使用?

太感谢了!

I got the following Array in PHP:

$data[] = array('Slug' => 'jan', 'Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3');
$data[] = array('Slug' => 'kjell', 'Name' => 'Kjell', 'Alter' => '4', 'Jahrgang' => '2018', 'ID' => '0');
$data[] = array('Slug' => 'bjarne', 'Name' => 'Bjarne', 'Alter' => '6', 'Jahrgang' => '2015', 'ID' => '2');
$data[] = array('Slug' => 'monika', 'Name' => 'Monika', 'Alter' => '72', 'Jahrgang' => '1950', 'ID' => '1');

How can I output the Value of "Jahrgang" where "Slug = Jan"?

How can I change the "Jahrgang" where "Slug = Jan" from 1981 to 1982?

Is there any way without a foreach?

Thank you so much!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱给你人给你 2025-02-08 22:16:25

可以使用Pair array_searcharray_column像这样完成的方法:

$key = array_search('jan', array_column($data, 'Slug'));

array_column仅带有给定键,在这种情况下,slug返回单维数组,然后array_search返回此值的键,在缩小的数组中应与主相同。因此,出于疑问是:

echo $data[array_search('jan', array_column($data, 'Slug'))]['Jahrgang'];

$data[array_search('jan', array_column($data, 'Slug'))]['Jahrgang'] = '1982';

It can be done with pair array_search and array_column like this:

$key = array_search('jan', array_column($data, 'Slug'));

array_column returns single dimension array only with given key, in this case Slug, and then array_search returns key of this value in reduced array with should be same as in main one. So for questions it would be:

echo $data[array_search('jan', array_column($data, 'Slug'))]['Jahrgang'];

$data[array_search('jan', array_column($data, 'Slug'))]['Jahrgang'] = '1982';
盛夏已如深秋| 2025-02-08 22:16:25

通过将数组键设置为slug值,我会选择稍微重组数据以更容易访问。

$data['jan'] = array('Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3');
$data['kjell'] = array('Name' => 'Kjell', 'Alter' => '4', 'Jahrgang' => '2018', 'ID' => '0');
$data['bjarne'] = array('Name' => 'Bjarne', 'Alter' => '6', 'Jahrgang' => '2015', 'ID' => '2');
$data['monika'] = array('Name' => 'Monika', 'Alter' => '72', 'Jahrgang' => '1950', 'ID' => '1');

这将使您可以使用该密钥访问或设置任何值。

//access
$info = $data['jan']; //array('Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3')

//set
$data['jan']['Name'] = 'Not Jan';

//loop
foreach($data as $slug => $info) {
    //$info = array('Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3')
}

在您的情况下,此方法的另一个优点是确保每个“ slug”都是唯一的,因为数组不能包含重复的键。

I would opt to slightly restructure the data for easier access, by setting the array key to the Slug value.

$data['jan'] = array('Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3');
$data['kjell'] = array('Name' => 'Kjell', 'Alter' => '4', 'Jahrgang' => '2018', 'ID' => '0');
$data['bjarne'] = array('Name' => 'Bjarne', 'Alter' => '6', 'Jahrgang' => '2015', 'ID' => '2');
$data['monika'] = array('Name' => 'Monika', 'Alter' => '72', 'Jahrgang' => '1950', 'ID' => '1');

This would allow you to access or set any values using that key.

//access
$info = $data['jan']; //array('Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3')

//set
$data['jan']['Name'] = 'Not Jan';

//loop
foreach($data as $slug => $info) {
    //$info = array('Name' => 'Jan', 'Alter' => '39', 'Jahrgang' => '1981', 'ID' => '3')
}

Another plus side to this method in your case is it makes sure each "Slug" is unique, because arrays cannot contain duplicate keys.

寂寞花火° 2025-02-08 22:16:25

您可以使用“函数”而不是这样的“嵌套”:

        function replace($data,$index){
        
        // count array length
        $num = count($data);
    
        if($index < $num){
            if($data[$index]['Slug'] === 'jan'){
                
                $a = [ $index => [ "Jahrgang"  => "1982" ] ] ;
            
                // replace new array with new values
                $re = array_replace($data,$a);
                
                return $re;
    
            }else{
    
                $index ++;
                check($data,$index);
            }
        }
                
    
    }
    
    replace($data,0);

You could use "function" instead of "nested foreach" like this:

        function replace($data,$index){
        
        // count array length
        $num = count($data);
    
        if($index < $num){
            if($data[$index]['Slug'] === 'jan'){
                
                $a = [ $index => [ "Jahrgang"  => "1982" ] ] ;
            
                // replace new array with new values
                $re = array_replace($data,$a);
                
                return $re;
    
            }else{
    
                $index ++;
                check($data,$index);
            }
        }
                
    
    }
    
    replace($data,0);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文