问题描述
问题已解决(在评论中) 我正在为学校制作一个项目,但出现此错误尝试访问这行代码中类型为 null 的值的数组偏移
<div class="user-name"><?PHP echo $guests["firstName"] ?></div>
foreach((array)$result as $guests)
{
?>
<div class="posts-container">
<div class="post-header">
<div class="user-details">
<div class="user-name"><?PHP echo $guests["firstName"] ?></div>
<div class="user-email"></div>
</div>
<div class="time"></div>
</div>
<div class="post-message">
<h3></h3>
<p></p>
</div>
</div>
<?PHP } ?>
人们要求提供 sql 代码和 $result 的类型/结构 类型/结构: object(MysqLi_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(9) ["lengths"]=> NULL ["num_rows"]=> int(5 ) ["类型"]=> int(0) sql/数据库:
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "guestbook";
// Create connection
$conn = new MysqLi($servername,$username,$password,$dbname);
// Check connection
if ($conn->connect_error) {
die("Connection Failed: " . $conn->connect_error);
}
$sql = "SELECT id,firstName,lastName,email,title,message,URL,showEmail,Date FROM guestbook";
$result = $conn->query($sql);
$conn->close();
解决方法
您正在尝试以数组形式访问空值。
在您的情况下,std::index_sequence
值为空。因此,访问 template <std::size_t ... Is,typename Tuple,typename Vec>
auto helper(std::index_sequence<Is...>,const Tuple& t,const Vec& vec)
{
constexpr auto N = sizeof...(Is);
constexpr auto Size = std::tuple_size<Tuple>::value;
if constexpr (Size == 1) {
// Unsure what you want here
return std::get<0>(t).foo(Vec.head(std::get<0>(t).n))
+ std::get<N>(t).foo(Vec.tail(std::get<0>(t).n));
} else if constexpr (N == 0) {
return std::get<0>(t).foo(Vec.head(std::get<0>(t).n));
} else if constexpr (N + 1 == Size) {
return std::get<N>(t).foo(Vec.tail(std::get<N>(t).n));
} else {
return std::get<N>(t).foo(Vec.segment((0 + ... + std::get<Is>(t).n),std::get<N>(t).n));
}
}
template <std::size_t ... Is,typename Vec>
auto summation(std::index_sequence<Is...>,const Vec& vec)
{
return (0 + ... + helper(std::make_index_sequence<Is>(),t,vec));
}
template <typename Tuple,typename Vec>
auto summation(const Tuple& t,const Vec& vec)
{
constexpr auto Size = std::tuple_size<Tuple>::value;
return summation(std::make_index_sequence<Size>(),vec));
}
将抛出一个“注意:尝试访问类型为 null 的值的数组偏移量”。
两个建议:
-
检查
$guest
值(快速):$guest['something']
-
检查
$guest
值(更好):如果
foreach((array)$result as $guests) { if (!is_array($guests)) { continue; }
是 SQL 查询的结果,可以尝试添加条件以避免 NULL 结果。 或者,使用$result
之前删除空值。
那是因为这条线
stage('Copy Cost File To Jenkins'){
withCredentials([sshUserPrivateKey(credentialsId: "462e5c76-fae2-4d66-a72b-15ddba9dc785",keyFileVariable: 'my_private_key_file')]) {
sh "scp -i ${my_private_key_file} -v myuser@mycompany.com:/some_path/SSC*.CP037 host-dirs/cost-files"
}
}
这不是你想要的,你需要像这样获取结果
$result = $conn->query($sql);
,
你可以试试这样的
<?php
//Array to be shown
$guests = [
['firstName' => 'Alex','email' => 'user@user.ru'],['firstName' => 'Jhon','email' => 'user@user.ru']
];
?>
<div class="posts-container">
<div class="post-header">
<div class="user-details">
<!-- foreach alternate syntax -->
<?foreach ($guests as $guest):?>
<div class="user-name"><?=$guest['firstName']?></div>
<div class="user-email"><?=$guest['email']?></div>
<!-- foreach alternate syntax -->
<?endforeach;?>
</div>
<div class="time"></div>
</div>
<div class="post-message">
<h3></h3>
<p></p>
</div>