我在Laravel 5中有项目。项目工作正常,但是我在数组中的排序位置有问题。 我的职位ID和电子邮件地址有误:
Array
(
[0] => Array
(
[0] => sda@swqdqwdwq.pll
[1] => 957
[2] => xxxx
[3] => xxxx
[4] => xxxx
[5] => 2021-01-19
[6] => tak
[7] =>
<a href="http://projekt2.test/admin/client/info/957" class="btn btn-xs blue get-info ">
<i class="fa fa-search"></i>
Przeglądaj
</a>
<a href="http://projekt2.test/admin/client/edit/957" class="btn btn-xs blue ">
<i class="fa fa-pencil"></i>
Edytuj
</a>
<a href="http://projekt2.test/admin/client/delete/957" class="btn btn-xs red delete">
<i class="fa fa-trash-o"></i>
Usuń
</a>
<a href="http://projekt2.test/admin/client/deactive/957" class="btn btn-xs yellow">
<i class="fa fa-ban"></i>
Dezaktywuj
</a>
)
[1] => Array
(
[0] => xxxx@op.pl
[1] => 958
[2] => xxxx
[3] => xxxx
[4] => firmowe
[5] => 2021-02-03
[6] => tak
[7] =>
<a href="http://projekt2.test/admin/client/info/958" class="btn btn-xs blue get-info ">
<i class="fa fa-search"></i>
Przeglądaj
</a>
<a href="http://projekt2.test/admin/client/edit/958" class="btn btn-xs blue ">
<i class="fa fa-pencil"></i>
Edytuj
</a>
<a href="http://projekt2.test/admin/client/delete/958" class="btn btn-xs red delete">
<i class="fa fa-trash-o"></i>
Usuń
</a>
<a href="http://projekt2.test/admin/client/deactive/958" class="btn btn-xs yellow">
<i class="fa fa-ban"></i>
Dezaktywuj
</a>
)
...
}
我的php代码:
$data = $this->getList();
print_r($data);
我需要更改职位ID和电子邮件(第一职位ID,第二电子邮件)。 我需要结果:
Array
(
[0] => Array
(
[0] => 957
[1] => sda@swqdqwdwq.pll
[2] => xxxx
[3] => xxxx
[4] => xxxx
[5] => 2021-01-19
[6] => tak
[7] =>
<a href="http://projekt2.test/admin/client/info/957" class="btn btn-xs blue get-info ">
<i class="fa fa-search"></i>
Przeglądaj
</a>
<a href="http://projekt2.test/admin/client/edit/957" class="btn btn-xs blue ">
<i class="fa fa-pencil"></i>
Edytuj
</a>
<a href="http://projekt2.test/admin/client/delete/957" class="btn btn-xs red delete">
<i class="fa fa-trash-o"></i>
Usuń
</a>
<a href="http://projekt2.test/admin/client/deactive/957" class="btn btn-xs yellow">
<i class="fa fa-ban"></i>
Dezaktywuj
</a>
)
我该怎么做? 我在老的Laravel 5中有项目。
请帮助我
答案 0 :(得分:0)
使用此代码,您可以循环数组并更改前两个元素的位置:
foreach ($array as $subArray) {
$tmp = $subArray[0];
$subArray[0] = $subArray[1];
$subArray[1] = $tmp;
}
答案 1 :(得分:0)
尝试一下:
<?php
$arr = ['foo', 'foobar@gmail.com', 'myName', 'myInfo', 954];
$arrMask = ['/\d+/', '/\w+@\w+.\w+/', '/*/', '/*/', '/*/'];
print_r(sortArrayByExp($arr, $arrMask));
/**
* Sort a array by RegExp
*
* Sort a array by regular expression
*
* @param array $arr Array to sort
* @param array $arrRegExp Array to postion Regex
*
* @return array Return a new array mirrored by value in $arrRegExp
*
* @throws \InvalidArgumentException
*/
function sortArrayByExp($arr, $arrRegExp)
{
if(! is_array($arr))
throw new \InvalidArgumentException('Value in parameter $arr must be array!', 556);
if(! is_array($arrRegExp))
throw new \InvalidArgumentException('Value in parameter $arrRegExp must be array!', 557);
$newArray = [];
foreach($arrRegExp as $key => $mask)
{
if(! is_string($mask))
throw new \InvalidArgumentException('Each value in $arrRegExp must be string or RegExp', 558);
$response = null;
if(@preg_match($mask, '') !== false)
{
foreach($arr as $posArray => $value)
if(preg_match($mask, $value))
{
$response = $value;
unset($arr[$posArray]);
break;
}
}
if($response !== null)
$newArray[$key] = $response;
}
return $newArray;
}
/* output must be:
Array
(
[0] => 954
[1] => foobar@gmail.com
[2] => foo
[3] => myName
[4] => myInfo
)
*/
此函数按包含regular expression
的新数组中的每个值对数组进行排序,请尝试我的示例here
编辑1:
您也可以使用Laravel collect
对数组进行排序,如下所示:
<?php
require "vendor/autoload.php";
$myCollect = collect(['foo', 'foobar@gmail.com', 'myName', 'myInfo', 954]);
print_r($myCollect->sort(function($above, $below)
{
$belowIsId = is_numeric($below);
$aboveIsId = is_numeric($above);
$belowIsMail = preg_match('/\w+@\w+.[\w\.]+/', $below);
$aboveIsMail = preg_match('/\w+@\w+.[\w\.]+/', $above);
$pos = 0;
if($belowIsId)
$pos = 1;
elseif($belowIsMail)
$pos = 1;
elseif($aboveIsId || $aboveIsMail)
$pos = -1;
return $pos;
})->toArray());
/* output must be:
Array (
[4] => 954
[1] => foobar@gmail.com
[0] => foo
[2] => myName
[3] => myInfo
)
*/
查看更多详细信息如何使用方法sort
here,但请注意保留键,首先是id,但数组中的键仍然相同